I have a very strong computer, but I understand others may not. So I'd just go with your suggestion, and have bodies disappear instead of keeping them in place till the level ends. Like probably give them 1 minute to stay or till they are no longer on the screen.
Computer power doesn't really matter that much concerning this. What is a much more interesting idea if you want to prevent players from having the game lag is running some additional logic which checks real_fps and room_speed. real_fps should remain the same as room_speed, if not it indicates that there is some lag. When you detect lag delete like the 10 oldest body's and keep on doing this check. It would be a compromise between having all of the dead body's and none. But what I suspect you'll see that even computers built 5-6 years ago will handle tons of instances quite well, especially if all of the instances are running no code at all. If you can make it so the dead body's freeze up to the point where they are only drawn via a surface you could probably have hundreds of thousands of dead body's before noticing anything in terms of performance.
I think you are over-concerning yourself with small moot points. There are ways to fix the problems you are referencing. I mean you are (presumably) working in a 2d environment. This means you are working with instances and sprites most of the time. Maybe bones if you chose to animate that way. But that still comes no where close to the amount of data games like Halo 3 were sending to the Xbox's GPU.
The depth = -instance_number solution provided by
@bojack29 is an simple and elegant solution. Just keep in mind that the objects you want to be overlayed on-top of the dead bodies(maybe your floor and foreground items) should have a depth such that the instance_number value won't realistically ever exceed it. Probably around -100000 should serve well enough, if not add an extra zero.