This is a great question and I’m hoping somebody else with more experience jumps in.
I can tell you where I’d start, though.
I think the Switch node is your friend. You might lay down a Base COMP for each scene, then inside each COMP, put the assets & logic for each scene, one at a time. Use a top level Switch node to switch between the different scenes according to whatever logic you want. This could be a length of time/ number of frames, or an action taken in one of the scenes (“Goal Reached”, say), or some other combination. One easy thing to do would be to store that information in a top-level DAT table, and then refer to that DAT in an expression in the Switch node-- if you have 5 scenes, then your Switch expression needs to evaluate, one way or another, to a number between 0 and 4.
I can imagine some extra wrinkles that might be present if you wanted to transition smoothly from one scene to the next, or if you were loading big files that caused slowdowns on data load; you might have to make one scene begin a few seconds before the previous scene ends-- but those are all details you can work out once you’ve got the general architecture in place.
The important thing is that nodes don’t, in general, cook or consume resources if they aren’t being used. I wish I understood the details and caveats a little better (anybody else who wants to chime in, please do!) but as a starting point, I’d say just to put all of your non-shared resources in separate COMPs with appropriate outputs (TOPs and Audio CHOPs?), and switch between them algorithmically.