"Instanced" Levels

I have a small level that acts as a galaxy map. When you click on a star, it takes you to a much larger level that PCG generates a solar system (via Open Level). There are over a thousand stars and solar systems in the game. All of the solar systems are created by the same solar system level. This works great in single player. I am realizing that in multiplayer, this will not work since no matter what star you click on, the server has no way of knowing it is actually a different location (its the same level) and as long as you are in any solar system, you will be in the same level as everyone else (right?).

I had thought that Load Level Instance was the solution here since you can supply a name for the instance, however, it just overlays the solar system level over the galaxy map level. It seems that streaming levels wont work either, because like the original single player method, there would be no way to know it is actually a different location (again, right?)

Surely creating unique levels from a template level is not something no one else has done. What am I missing to make this work? How do you create a unique and identifiable level, at runtime, from an existing level?

I have given this some more thought. The best solution I can come up with is a terrible option:

I could duplicate the Solar System level over a thousand times (maybe about 1200 to be on the safe side). Then, once the galaxy is generated, I can iterate through the stars and assign a level name to each in a variable (like “SolarLevel####”). The number would correspond to one of the duplicated levels.

It seems like this would work, assuming Unreal engine doesn’t break by having so many levels. However, this would be incredibly tedious and would probably take longer to duplicate the levels and add them to the project than it took to make both of these levels combined.

I really hope someone can suggest a better method before it comes to the point that I have to do it this way.

Maybe I should ask this a different way.

How do I create a new level during runtime?