- Checking `DrawSize != Vector2.Zero` is too specific. It could also
crash on zero-height-but-non-zero-width, or
zero-width-but-non-zero-height.
- Take the `gridCache.Validate()` call out of the zero checks, because
even if the width or height are zero, not generating anything is valid
and there is no reason to validate every frame until `gridCache` gets
invalidated again.
This was always haphazard code, but by luck it never triggered before
drawable load until now. With the recently nullability changes, this
would be triggered when `flash` is not yet constructed.
Switching to `AddOnce` seems safer to avoid multiple applications,
regardless.
Was causing there to be two kinds of missing `TournamentBeatmap`s: one
with missing `Beatmap == null`, and one with `Beatmap == new
APIBeatmap()`. In particular, they would appear differently in UI
(either as "unknown - unknown", or the intensely enigmatic " - ").