Cool..... for a while I thought that your solution was the "correct" solution. However if one of your drives gets an unreadable bad block, then you cannot sync onto another device. With integrated hot-replace, the array can find that block from elsewhere and the sync will complete.
It has occurred to me that with bad-block-list support, your solution can become completely workable - with just a little bit of extra support from mdadm. However I think it is a feature for which there is enough demand that integrating it properly is justified.
Thanks for the comment.