I would say your main issue is the level geometry. It would help if you describe your technique for generating the levels. I think it's this because from the edges of the map looking towards the centre is when it slows down most. Try displaying poly count on your screen, dbStatistic().
When I go close to a wall I can see you are drawing polygons outside where you are not supposed to be able to see. This is a massive waste as you only need two polygons for each wall surface, not a whole cube.
This would probably be hard to correct, but I think it would be worth it.
You could try this simpler solution, add all your cubes which share the same texture to the same object via limbs, then make a mesh from the object, then make a new object which will be all your cubes in one mesh meaning only one draw call = faster.
Finally, you could try to add your own simple occlusion culling system while you wait for official version. You could hide major parts of the levels and all objects inside depending on where the player is. Just design your levels in such a way that makes this easy, such as a corridor linking two large areas.
Hope something there can help
EDIT: If you try out the easier option of creating one large mesh remember that you lose culling, you should probably find a balance of perhaps 50-500 blocks in each mesh so they still get culled.