(Adding on that last post:) I tried Azureus again. It not only continued to be craptastic (way slower than even the Python client to hash files, random crashes, menus that were visibly laggy to display, all of the UI visually overlapping itself -- maybe it has bad packaging on Ubuntu?), it also exhibited the same mysterious behavior I had before.
cbradfield suggested rtorrent. It has a seriously gratuitously complicated interface (which is sorta amusing because this is even in comparison to Azureus, which is itself a trainwreck of "let's put in a option to twiddle that") but it isn't nasty Java and after a bit of poking it did exactly the right thing. I endorse this software. (But grab the version from their SVN, because they changed the UI around a bit in a way that's easier to use.)
jwz's diagnosis was right: though there were reportedly over a thousand seeders, nobody in the network had about one third of the chunks while everyone had the other two thirds. rtorrent has a nice overview screen (that picture is pretty representative of the program -- serious information density that you can't really parse without looking at the manual) that made it immediately clear; I'm sure Azureus must have a similar display that could've indicated this to me but in my confused clicking around I didn't find it.