Your method using modular cave chunks should actually work well. As long as you use the same static mesh for each piece then the entire cave can be rendered in a single draw call (just as if it was a single mesh) with a significant saving on vertex data that needs to be stored in memory.