The gameplay clock runs at 1000 ms intervals, and the previous duration
meant that the "store" step could cause a missed spinning check in a bad
case scenario.
Noticed in a flaky test with the changes to random, where the debounce
may be delayed to the point of thinking the selection is invalid even
though it's valid (timing woes, I cannot explain in words but I would
highly recommend smiling and nodding approach).
Previously, random selection would always be done at a *set* level. The
final operation of a random action would be "select the user's
recommended difficulty from this randomly selected set".
This makes no sense when sets are not grouped together at song select.
In fact, it is completely broken with the previous commit which adds
group-isolated random support – if we're grouping by difficulty and the
user's recommendation is not in the current group it would throw the
user into another group unexpectedly.
This fixes the issue by splitting out the random implementation into two
separate pathways depending on the carousel display mode.