What's the point of flash wear leveling, again?
Look at ubifs for example. When a block starts getting "old" and growing a lot of ECC-correctable errors, it marks the block bad pre-emptively and moves your stuff to a better block. If it tries to write to a block and it doesn't work, it marks the block bad and moves your stuff to a better block. So it's quite good at dealing with blocks that go bad.
Is there really anything statistically better about moving your stuff around pre-emptively, before the block goes bad, rather than just moving it around after the block goes bad?
As far as I can tell, once something is written successfully, you're unlikely to lose more than a few bits at a time, which ECC (and then UBI's auto-migration-with-too-many-ECC-fixes feature) can safely recover as long as you read your data every now and then to check on it. But maybe there's some block failure mode I'm not understanding.