I thought this had been working correctly with the initial changes, but I guess not? Anyway, adding a frame delay from the RelayUtpClient's Disposal before Destroying it to ensure the disconnect message reaches the host.
// We need to delay slightly to give the disconnect message sent during Dispose time to reach the host, so that we don't destroy the connection without it being flushed first.