Introduce preferred download peers

Keep track of whether we have peers that are preferred candidates for downloading blocks from, but if there are none, also use others.
IsPreferredDownload doesn't look at node->fPreferredDownload, is this intentional? (if so, the naming may be a bit confusing)