Improve storyboards handling by making use of `TransformSequence.Loop()`
Closes https://github.com/ppy/osu/issues/12401
For storyboards with large loop counts:
- Reduces memory usage
- Speeds up storyboard loading
Examples of maps fixed: https://osu.ppy.sh/beatmapsets/939511 https://osu.ppy.sh/beatmapsets/1108479 Both are unable to run on master
There was a concern about potential performance issues during rewinding in https://github.com/ppy/osu/issues/12401#issuecomment-1532630432, however I couldn't recplicate. May be due to a bit different approach or I wasn't looking hard enough.
So I did a song and dance with generics due to DrawableStoryboardSprite and DrawableStoryboardAnimation not having a common ancestor, which was a big problem here (this was needed anyway because even with TransformSequence approach we will end up splitting stuff per type, which is no longer the case).
In the end looks cleaner I suppose.