Yea normals are tricky, how I would approach this would be to use the MODEL_MATRIX.
Some one did this not to long ago.
I think if you can modify the matrix uniforms you wouldn’t need to recalculate the normals.
https://en.m.wikibooks.org/wiki/GLSL_Programming/Vertex_Transformations