I think I understand the problem here, since On Created is fired for your layout from a load, because its a transition from a different layout, so the objects you have already loaded up fire the event again.
Basically its firing once too many since the original On Created event has run its course already, then you save the game with whatever changes you call in your On Created event.. loading fires it again one more time and there's clashes with the already set changes.
You could fix this by placing your On Created triggers under a global var "IsLoaded=0" or something, basically you want to tell the game to only fire those On Created triggers IF it was not recently loaded state.
I have a similar thing with my game, launching syncs all the data, saves the game, then the layout transitions into space after a second or two. But loading from that state means the player isn't in the port, but end up in space after being in the port for 1-2 seconds, because the save-state takes into account the current event chain, so if there's wait triggers, it will process after a load. Basically you just need to design the save/load to take into account the quirks of the system.
Or do a fully custom file write/read save system. It avoids all of those issues and it will work like a normal layout transition, triggering On Start of Layout again (which save/load does not). Depending on the scope of the game, it may be a solution. Else just work with the system and fix the clashes.
Edit: Some more testing with my custom save/load using NWJs file write/read, and it all works 100%. Thanks Ashley for the prompt update, very much appreciated!