IMO the constant sortings are nearly useless.
It just needs to have 4 list of sorted blocks, one for each 90° angle. Then it just re-sorts them all when an object moves (which would be very cheap), or if few objects move it can just paint them dynamically at the right time (also cheap).
So at all times it has 4 presorted lists, and it chooses the right one depending on the camera position.