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. Merkle root and timestamp also change over time of course, but while iterating over 1 nonce range (from 0 to 2^32) usually the remaining header is kept or assumed constant to make it also easier for miners so they don't have to constantly check for changes after every single nonce.
SAT solvers are also just fancy brute forcing mechanisms, though they have the advantage that they can be able to ignore certain paths on their own if they are not useful or redundant.