To me the best way would be to finish running the event sheet (which includes finishing the trigger events, so basically stopping the sheet) THEN destroy all objects and change layout.
It already does that, but destroying objects just before changing layout still triggers 'On destroyed' for those instances (since they're being destroyed by the engine). Triggers still work normally in this case and then you end up creating a new object halfway through the engine's process of switching layout. This is a really awkward time to create a new instance. If the engine then destroyed that instance again, then it risks firing another trigger which creates another instance which the engine then also needs to destroy, creating an infinite loop and hanging (this is what my reply to the other linked bug report was getting at). So it doesn't try, it just destroys everything then switches layout, and if any new objects were created they end up on the next layout.
The workaround should be simple: in the 'go to layout' action set a flag to disable the creation of new objects in 'on destroyed' triggers.
I can't reproduce the "drawing instance on wrong layer" error in the .capx you provided, so I have not attempted to investigate that. Please file a new report with a .capx that reproduces that particular issue if you want me to have a look at that.