I think you need to consider a system that assigns GUIDs at runtime (It seems there is no other way to solve the problems of level instances).
And then - ALL your dynamic objects should be loaded (spawned) ONLY from the save file (or from the default level for first load).