1. The way this client deals with bandwith limitation seems better than others. It uses a short time frame to compute upload rates, avoiding them to by-pass the limitation. (you won't saturate your upload stream, even by setting 14kB/s on a 16kB/s line)

2. The BitTorrent protocol lets you act mainly on two things : who you give data to (unchoking), and when someone is ready to send you data, what you will get from him (piece picking)
Piece Picking: Unlike other implementations, Azureus may download a single piece from several peers (the bigger the pieces, the more likely). It will queue up 10 requests on each peer that allows downloading from him/her.
The main way it works is by doing rarest first, but using a range on rarest so that, the more the pieces are available, the more the range will be. If you can continue a piece started (and not fully downloaded, or requested to others), you will continue that one. If you can't you will try a new one. The range used in today's implementation is of 90%. That means, that if a piece is available only once on the network (ie the case with 1 seed, and a lot of peers), if the seed unchokes you, you will get a piece that no-one else has. If a piece is already available on 10 peers, you'll choose to continue it, instead of starting a new one only available 8 times for example (8 is indeed less than 10 but not so much). This way, you globally do rarest first, but you also try to finish pieces started.
Unchoking: The unchoking algorithm works in two different ways, depending on wether you are seed or peer. Unchoking is done every 10 seconds and optimistic unchoke is done every 30 seconds.

When peer, you'll unchoke in this order (until you have enough unchokes) :
- The best uploaders (which upload at least 256B/s)
- People you are interested in (unless they are snubbed, or they have reached a share ratio of 1/10 (1b sent by them allow them to get 10 bytes)
- People that have globally uploaded you the maximum ammount of data

When seed, you'll unchoke (Seed unchoking algorithm is the main thing to be optimized yet):
- People that have the highest 'statistic upload'
- People that are most advanced
- When you are a seed, snubbed people will never get unchoked (but Azureus won't snub anyone when you are seed), manually snubbing someone (right click on this peer in the details view) can let you control to who you DON'T want to send data (I hate leechers when I'm trying to seed with my 128kb adsl line).
We are trying to find better ways of unchoking when acting as a seed (but this is really not that easy).

3. Snubbing: snubbing is a flag (computed, but that you can change manually), that indicates that a peer tells you he will send you data, but doesn't. When a peer is snubbed, you don't trust him anymore, until he gets un-snubbed. So you'll only queue him 1 request, and moreover you won't mark that block as being downloaded (so you'll request it from an un-snubbed peer too). A peer gets snubbed by taking more than 1 minute to send you a block (16k , so that's less than 300B/s), he gets un-snubbed if he sends you a block in less than 45 seconds.