I don't even know where to begin on this one; I thought I had the gameplay side worked out, but this it's suddenly become a disaster.
The major problem obviously is the Start() is running twice on all elements in the loaded scene when there is more than one player in the channel. Even when my game is running Single Player, it is still 'networking', as in the game plays as a multiplayer game even with only one player to allow players to join freely.
This problem only began today. I instantiated a prefab in a previous scene to manage my custom lobby. The prefab had a network ID of 0 to allow instantiation, as do all the other prefabs. When loading the next scene, the first prefab instantiated always seems to favor 16777214, and the same was true in the previous scene. So then I got a 'use unique identifiers' error; it still instantied the new prefab (with a 26...), but complained about it anyway.
So I tried taking away the DontDestroyOnLoad(), and obviously it fixed it. So basically, it's trying to spawn every first prefab with the number 16777214 whether one exists already or not. It just seems to be that number too. Perhaps it's always 16777214 the first prefab in a scene?
The real nightmare began when I tried to network locally; up until this point, it was working fine. Suddenly, I have 2 copies of all objects because the Start() functions for EVERY object in the scene that is present on loadup is running twice. These are not networked objects, they are just basic stuff like Audio Listeners/Jukebox scripts for background music and a script that spawns the player.
I'm not entirely sure where to even begin sorting out this problem. I would simply reverse everything I have done, but that's a lot of work (that I suspect I'll need to do anyway to debug the problem).
I'm hoping perhaps this problem has come up before?