I used to work on SSD firmware. I did implement something like the above for a custom solution for caching. When the flash storage is running low on space, it reduced the reported storage capacity and notifies the host which will need to trim some data to bring it below the reported storage capacity. The striping of data across multiple blocks also has been implemented. You could fail an entire NAND die and it would still function though a little slower assuming you still have enough spare blocks.