It´s all depending on how dynamic you want your game to be. If your sun positions is going to change constantly. then you need a more advanced approach.
But, in my opinion, your approach of having the original image and rotating it is good enough. You can do a basic "dynamic" shadow and you don't have to do a lot of overhead data for just shadows.
Then of course you somehow need to tag specific objects to cast and not to cast shadows.
There is also other solutions like a ray traced approach or a static shadow map.
The ray traced approach is quite straight forward, you trace on the screen and when your ray find a "blocking" pixel, you break the ray and don't paint anymore "light". this will be the most awesome dynamic solution.
The static shadow map, is basically the same but you ray trace offline and save it into a texture. this wont be dynamic at all since you have to rebake every time the sun position changes.