I use NetLimiter to limit the upload bandwidth used by Bitcoin-Qt and I specify maxconnections to limit the total number of connections to something that is manageable.
Thanks for all the replies. This has been very informative. I checked the Preferences on bitcoin-qt and found that it uses uPnp, which has the ability to open ports on routers that have it enabled. So I am trying, just as an experiment, shutting off uPNP on my router and see if anything else breaks.
The other interesting thing I discovered was that my supposition was correct about UDP. UPnP uses a UDP variant of http called httpu. You can do some pretty cool things with UDP because it doesn't require establishing a heavyweight connection like TCP.