I did a quick hack to make the object rotation with normal maps work well enough. Here is the result:
For each rotating object, I change the location of the light X,Y so, that the light location rotates around the object/normal map in the opposite direction with a fixed distance. Using some basic trig to figure out the formulas for the X,Y location of the light, I got this effect, which looks pretty good. Generally, the shadows are on the bottom of the stones and the lit portions are on the top. This models uniform moonlight (not the point light of the lantern) coming from above the stones. Using x=R*cos(angle), y=R*sin(angle) to define the circle trajectory (with adjustments for 90 being coming from above and 180 to make it on the correct side.) I think there is a good chance I can make it look better by adjusting and changing the normal maps themselves (in Sprite Dlight.)
Event snippet (must do adjustment separately for each stone since they are rotating differently, on creation, I capture the UID of each normal map associated with each stone diffuse texture.) I think I can actually simplify this by just using the X/Y of the SwirlNormals and can just loop through those instances.
A better way to do all this would be to change the shader itself, so it takes a rotation angle of the normal map/object and then modifies the normals based on that rotation angle, this would be much more flexible and is left as an exercise for the reader.