I'm sure I'm missing something here (timestamp and previous block come to mind) but would it be possible to create a burst of transactions yourself -- enough to populate an entire block -- carefully designed to make the calculation of the hash quicker than accumulating transactions from the broadcast stream?
By adding transactions, you can change the merkle root part of the blocks, yes. There is so far no known way though to find out how to "design" this input to make the output more favorable for BTC mining, so currently only the nonce is generally changed when mining for some time.
this would certainly violate the irreversibility principle behind SHA-256.