How many block locator hashes are sent in a
getblocks message? And how distant are these locator hashes from one another?
getblocks message pushes a maximum of 500 block
invs to the caller. It will lookup the given block locater in the active chain and pushes up to 500 MSG_BLOCK invs to the caller (it might stop earlier because the called node reaches the chain tip). The corresponding code for bitcoin-core 0.10 can be found here (https://github.com/bitcoin/bitcoin/blob/0.10/src/main.cpp#L3888).
Also notice that bitcoin-core now uses the headers first approach and therefore getblocks is no longer in use when acting as a "calling node".