Unity allows multithreading but in a limited way. If you want to use multiple threads, that's fine. But you should not do any scene or asset related operations in these threads.
I think the most easiest way to get over this is to delegate scene/asset related operations to main thread. In your case, you can add all incoming network data to a Queue in your thread. Then you can consume the data in main thread, which could be one of your scripts' Update method.
Keep in mind that you have to lock Queue when you add/get data. Otherwise more than one thread end up accessing the Queue at the same time. Look at C# locking mechanism and Queue.Synchronized for more info.
OR
If threading feels overwhelming, you can forget threading and use non-blocking methods. It will allow you to do networking in your Update methods. See below
https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.blocking%28v=vs.110%29.aspx
And take a look at 'asynchronous' methods here
https://msdn.microsoft.com/en-us/library/System.Net.Sockets.Socket_methods%28v=vs.100%29.aspx