It depends on which full node implementation you use. IIRC Bitcoin Core avoid make connection to multiple nodes with same IP block.
Interesting, I did not know that. There may be speed test, but it would favor close nodes, so it is not the best solution.
Based on commentary[1] i found, it looks looks like what Bitcoin Core do is bucket/split the node by
IP group.