I don't know why you set the MTU to a lower value... What I do know, is that I've set it to 65535; my machine now transmits 64KB instead of just 1.5KB (per packet)... Can you imagine what would happen if I set this to UInt32.MaxValue...?
I also made a long-winded answer to your question submitted to the blog, if you're interested.
In fact, some versions of Linux didn't do UDP reassembly properly until a year ago (was a topic here on HN). Reordered UDP wasn't dealt with properly if I recall.
There are routers that drop UDP for any reason or no reason. And so on. So UDP is the red-headed stepchild of protocols, with little testing going on and lots of issues.
I recommend putting a protocol on top of any UDP transfer you code, and never increasing the MTU.
For basically everything TCP is used. UDP is just used by DNS and they usually weight 100 - 200 bytes.
Look into your wireshark!