Seen a (separate?) issue like this which seems specific to Linux (which I assume probably doesn't apply to the original poster). Pretty inexplicable, since all the server list packets would make it to the local network interface (in order, even), but the client just wouldn't take them. And because it seemed random which machines were affected; I had two near-identical setups, one of which had no issues and the other which would fail 50 tries in a row.
Made a workaround for that particular instance of blank server lists, by placing a man-in-the-middle between the client and the login server which filters the fragmented server list packet down to a single, unfragmented packet (targeting the particular server you want to see). Works surprisingly well. Original thread
here, repo
here (targetting p99's servers, but easy to swap another server in).