What is "ModifyNonce(blockheader, nonce)"?
sticks the incremented nonce into the block header, replacing the previously tried one.
I'm a total noob at this but, if I didn't misunderstand
this, the current timestamp is also took into account. Else, a given block could be unsolvable if it happens that none of the 2**32 nonces result in a hash less than the target.