If you follow a convention for port assignment, you should be able to handle this easily. For example I wrote a customized server executable for Windward that supports easier set of parameters such as "-public" to make the server automatically register with the master server list, making it visible to everyone. You can skip the UDP port assignment the same way, and simply assume that with a given TCP port, UDP will be X+Y, where "X" is your TCP port, and "Y" is some value. For example port 5127 for TCP will automatically assume port 5128 for UDP. Then when you get your server list from the lobby, you will know exactly which port to ping.
And yes, as cmifdll mentioned you need to have a UDP listener on the server for pings to work. TNServerInstance.Start lets you choose a UDP port as well.