Windows vs Linux -- I believe IO completion ports are only supported on Windows, which would suggest better performance there... but Linux is generally better for running servers of any kind. In the end, I think it'll be about preference -- what you prefer to use.
JoinRandomRoom -- you can request a list of open channels from the server, then just pick a random one and join it.
You can also compile the server's C# files natively by extracting the ZIP's contents into the root of your project, then opening the server project with MonoDevelop.
Alternatively, you can create a new C# project from scratch by including these files:
Assets/TNet/Common/*
Assets/TNet/Server/*
TNetTest/Servermain.cs (extracted from the zip file)