Currently, pieces are acquired sequentially - this is inefficient in its own right, and will not scale to multiple peers. The new strategy will be something along the lines of:
Share state of peers to estimate rarest pieces
Coordinate state of threads to determine which pieces have already been downloaded
Use this information to determine appropriate piece(s) to fetch (this should include some randomness to prevent multiple threads acquiring the same piece)
Currently, pieces are acquired sequentially - this is inefficient in its own right, and will not scale to multiple peers. The new strategy will be something along the lines of: