Coming from #27652. Implementing the first part of it.
The idea is to let users call getblockfrompeer
without providing any peer id.
The node will internally select one peer at random and make the getdata
request.
This also fixes a bug where the user is allowed to call getblockfrompeer
providing
an id of a peer that signals a “limited” service. As limited peers cannot provide historical
blocks, it is not correct to allow the user to do that.