When we request headers from a peer (something we do only for one peer when we’re in IBD, to avoid duplicating it), there is no timeout. If the peer we’re asking it from does not respond, we’re stuck.
Fix this by adding a timeout, and integrating it in the block fetch timeout logic (because, when we already have outstanding block download requests, we can’t header to appear quickly).