The problem is simply that the number of connections Azureus and other P2P clients make overwhelms the router's connection tracking tables and it ends up dropping packets all over the place, slowing web connections to a crawl and making them unreliable.
One of the recent changes is decentralised tracking. This allows Azureus to circumvent problems if the tracker is no longer online. However it does this by initiating a lot of connections to other peers, and it is this which floods the poor little router.
On other clients such as µTorrent, decentralised tracking is called DHT.
The answer is to disable this, and also reduce the number of connections the P2P client makes - I've set kissycat1000's to 30 max connections globally.
On the router you should disable any QoS because this may also cause the router to choke on the number of packets/destinations.
Currently kissycat1000's router is set to reboot overnight, but I think I can probably take this out now.
I did initially try a different firmware which is reported to sort the problem out. The firmware I tried (DD-WRT) is in beta, and certainly we had problems with the GUI refusing to accept commands - but that could have been Azureus causing it to lock up at that point - I have not tried it now I've sorted out the Azureus problem.
A side note - the Linksys routers actually use linux under the hood, all except the latest WRT54GSV5, which has reduced flash memory and RAM and uses VxWorks, a proprietary embedded OS. If you're in to upgrading the firmware on your router, avoid these latest ones. Or, of course, use a linux box for your router anyway, and you can do all sorts of cool things like host your own webserver, email, proxy, calendar etc :)