I'm not sure what is causing this. Vertex normals get corrupted for paint and mask sculpt brushes but not the normal geometric ones. Since we don't actually need to recalculate normals here to begin with I've just disabled it. The code now calls the appropriate node mark update function based on the sculpt tool.