RFC prefabs or RCC prefabs? Your RFCs shouldn't have GameObject as a parameter - you'll end up serializing the entire GameObject over the network and this is very expensive.
For RCCs (and TNManager.Instantiate in general), you pass the path to the prefab as a string. Pass the full path here, including its subfolders.
The reason it's done this way:
1. The old way involved dragging & dropping every prefab you'd want to instantiate onto TNManager. This is obviously tedious and hard to manage for complex projects, but it also kills memory which leads to...
2. When a GameObject is referenced in the scene (eg; a component of yours has a public GameObject prefabToInstantiate field and you drag a prefab onto this component field in the Inspector) then Unity will *always* load that GameObject when the game starts and will never unload it.
The new system uses the path to the resource and loads it using Unity's Resources.Load function. It also then caches the return value for faster subsequent loads.
Your problem with TNManager.Instantiate returning void is common: use the search function for solutions. What I usually do is have a GameManager then for every GameObject I'm interested in I'll have it register itself with the GameManager in its Awake function. You could even add an event to the GameManager that's fired whenever an object registers itself, and then subscribe to this event where ever you need to (though this is likely poor design).
The reason TNManager.Instantiate *has* to return void is because it's a network call... network calls will never be instantaneous. The object will be created when the server processes your request and sends its response (to all players).