After lots of trial and error, I think my print statements are measuring artifacts…
Even if I massively simplify the loss function to something like loss = img_b_pred[0][0][0] - img_a_pred[0][0][0], then even though that loss is computed in .001, the overall training step time (about 0.26 seconds total for forward + backward) does not appreciably decrease from the scenario presented in the original question.  More computation time is shifted to what I measure backward() taking up.
I would still be interested to know more about why the above scenario measures such a large time for initializing the loss to 0 though, if people are knowledgeable and willing to share!  Perhaps it happens to kick off something behind the scenes with respect to the graph?