I can't believe it didn't bite me in the nose.
So here's how to fix those corrupted photos.
Download XVI32 (or, if you're not on windows, some other hex editor)
Drag a corrupted file over to the XVI32 window.
Search for a big string of zeros (I usually go for about 10 blocks of zeros in a row, though you might find a few false matches before you find the big block).
Bookmark the first zero in the run so you can get back to it.
Block-mark the second block of zeros in the run. Scroll to the end of the string of zeros and block-mark the last block. Delete the block and save the file. It'll still be corrupted, but the offset will be reduced greatly.
So here's where johno found the final steps.
Go back to the bookmark. You'll see a 4-block pattern working its way backwards up the file. It's going to match xx:9x:10:00 (this is why you saved the last 00, to help you recognize the pattern.
Block-mark the bookmarked 00. Work backwards in the file. the 9x will always be the same 90-something. (94, 95, 96 I've seen in files). The xx will decrement. The smallest repeat I've seen is two of the pattern. Block-mark the first xx in the sequence and delete the block. Save the file. It should be intact.
I've got a few I cleaned up in my ChazRecovery Gallery