1. You have JoinChannel, giving it a scene to load... and yet your OnNetworkJoinChannel is on the same script. Why not put it on a different script that actually exists as a part of your "Game" scene? You also mentioned you have 2 scenes, yet I'd expect 3 -- starting scene, game scene, and disconnect scene.
2. TNObject ID of 0 is only valid for something that's dynamically instantiated via TNManager.Create / AutoCreate. If you have an object that's already a part of your scene, then it must have a non-zero ID.
3. OnNetworkJoinChannel should only be called once per join, but it gets called on all scripts present in the scene. If you have two scripts with it, both will receive it. When in doubt, check the full call stack. NGUITools.GetHierarchy would be useful here. No idea if DFGUI has something similar.