Also, while playing a 3D game and seeing how they are working around the drawing distance limitation by decreasing models detail/texture, I thought maybe we (in fact, you) could make some sort of Level of Detail for drawing blocks in far distance.
But maybe it can't be lowered, as each face are already only 1 polygon, there's no way to lower them.
But another solution could be to make a single face for multiple adjacent block of the same texture.
It would lowered the face number, and allow more drawing distance. (do that merging only for blocks far away from the user, not editable one).
Or you could replace multiple blocks with one big block, in the distance it shouldn't look too bad.
I don't know how you coded each block, maybe it's not possible to make a Level of Detail mechanism.
But for example, you check the visible blocks texture of a given 4x4x4 area, and replace it with a big 6 faced block textured with the most used one (jpeg compression?).
maybe it will require even more power from the CPU, but you may win drawing distance.
If it's a full chunk with invisible blocks, it would take underground block into account and could make the resulted big block with a different color, or empty, it's not a good idea.
Maybe let the user choose the compression rate.
Currently, are you keeping in graphical memory all blocks, even not visible, or only the one with visible faces?
Sorry to give only idea without working on it.