But then TNManager.LoadLevel will always cause bugs because Channel.Reset is called on the server.
Player A joins Channel 1. Player A instantiates TNObject#1. Player A calls TNManager.LoadLevel. Server calls channel.Reset.
Player B joins Channel 1. Player A calls RFC#1 on TNObject#1. TNObject#1 does not exist for Player B: error.
I don't think TNet should control object lifetime. Unity will only destroy an object if the scene it belongs to is unloaded. You can still load additive scenes.
I think objects should still be destroyed when leaving their channel, but they should also be destroyed when unloading their scene.