By designing the levels in such a way that they reuse more or less the same objects. One would have a separate "editor" type of game, where you move the objects where you need them for a level. Save and record their locations an orientation into some database or file. You can also save the hide/show state for each level.
You could use different terrain RB's for each level, as well as many other different meshes and RB's. The key is reuse.
When the game is started, you use your "level 1" assets. When you want to change levels, you use iObjectRefresh() to change existing RB's, sprites and skinmeshes as you need them. Using the previously exported info, you can set the level up exactly as you need it. In this way, by reusing pre-loaded objects, you can change them as you wish, for as many levels as you wish to make in your "editor-saver".
Most game engines do it anyway, so why not use a concept that works well. "ExitFade" is fine for simple stuff such as menus, that don't use many resource.
You can locate anything, most event objects as well. You just have to design your levels, so that they share as many objects as possible, then the sky is the limit. The iObjectRefresh() take s a few seconds, but it is negligible compared to a full game load.