- replace the sprite collection on an animation and it will play using the new frames
Yes, you can do that if you want but Unity will load the same thing mulitple times.
- use some kind of offset to shift the start position of the animation around on the sprite sheet
You can do this on the material but it'll be more effort than what I suggested.
Theres a little pain involved in figuring out the editor script, but once you do you can automate it all. This is by far the most optimal solution for runtime as you're doing all the dirty work, however inefficiently, in the editor.