If you're talking purely about the first part of that you could spawn the souls where the player died then set position to a previous checkpoint. If you go between layouts you can give the soul object 'persist' behaviour so they stay there until picked up.