camera direction is not fully correct, you need to use the direction between the eye position and one of the vertices of the triangle. otherwise you will cull too many triangles on at some places and too few at others. there are a lot of models cooked in a wrong way, but maybe in your tests it was just this bug and not the models -> fix it and test again ;)
for your culling idea, you just need 64patches x 5 places of frames. just render the object with a different color per triangle and then go over the frame and figure out what colors are in the framebuffer. all invisible triangles will have no color in the buffer. your idea is usually called 'pvs' "precomputed visibility set", you might find quite something about it on the net.