An InboundTransferTask fetches all segments from same source. But not all segments we need are available from same source, that's why we need multiple InboundTransferTasks - one for each source, initially. But during the process we might have issues with a certain source if it fails before the transfer is finished. In that case we need to pick another source for the unfinished segments. These might come from a source for which we already have a task running - hence the need to have multiple tasks per source.