Would it be possible to force a bad block relocation on the drive itself.... By this I mean if during a sync / read we see a bad block then if we can make sure the HDD recognises this LBA as bad then it will re-map... possibly meaning that MD would simply only need to write that data again created by parity etc and the drive will store elsewhere appropriately.
I seem to recall entering bad blocks on Seagates many years ago via some tool, so although it may be proprietary I am guessing it could be possible over scsi.... just an idea
PS Just for the sake of saying it whilst I am here, it has been good to watch MD / MDadm morph from a what used to be considered a free and okay software RAID to a mainstream raid solution that out benefits many of the mid-level and above hardware raids which I test. I am sure you hear this all the time, but you and all those who have contributed deserve a big thank you from a lot of us users!