Your logic is incredibly opaque here. Why does incomplete game data sometimes skip the entire league, but as long as you don’t get too much all at once, you’ll only skip individual seasons? This still feels extremely artificial, but I’ll give you the benefit of the doubt there; still, it does seem like there’s quite a few utterly unrelated things going on here (for instance, there are two places where you increment number_of_incomplete_game_data but they have different loop-skipping behaviour).
This has a strong smell of standard multi-level validity done weirdly with ad-hoc constraints. If this is the best example you can come up with, I would have to say “welp, sometimes code is messy, deal with it”. This code is BEGGING to be refactored in some way, to make the logic clearer; and only you, the one who designed its constraints, can figure out how.