Well, it could be residual signal, or it could be a math error on my part. I'm going to try to reduce to a submodel that can be examined with 3dttest++ so that I can examine residuals I know are calculated correctly.
This was the most spectacular of the residual images I could find, but almost every single one of them had something that looked like one or more known networks, and these were even consistent within sessions (and to a lesser extent, within subjects). So unless I've screwed up, I'm going to need to separate the noise into within-session, within-subject-between-sessions and between-subjects components. And once I've done that, I have no idea how to use the information to help with multiple-comparisons correction. :/