A shower thought I had at some point yesterday but didn't post til today:
Teams are fundamentally unbalanced, and huge type weaknesses throughout are pretty common. TI doesn't want to restrict overlapping weaknesses from removing Pokemon, so a potential workaround that doesn't require increasing team generation time (not by very much, anyway) is rolling through all of the Pokemon on a team once it's made and, in order, all of the types, and checking per each if there is any overlapping weakness, or potentially even sweeping neutralities. On seeing an overlapping weakness (define as desired; maybe something like 2 weak and no resists, 3 weak, or 6 neutral), a level boost is applied - arbitrarily, 2-4 levels, but feel free to pick your favorite number - and given to the Pokemon with the highest level that bears that weakness.
Highest level such that the Pokemon in the lowest tier is given the boost and given the least consequential jump (72 > 75 is a big jump, 89 > 92 is comparatively smaller) so as to avoid breaking things.
You could limit the amount of level boosts that you would get (one per Pokemon at most, obviously, but probably just one or two per team) and could also restrict certain Pokemon from getting level boosts (ex. Pokemon with max airstream and setup moves, Pokemon with fairly dominating setup moves like quiver dance, dragon dance, shell smash, uber Pokemon as a whole, Pokemon with set levels, and so on) so as to avoid basically making one Pokemon randomly a more powerful sweeper rather than the ideal result of a Pokemon better able to handle particularly poor matchups.
Alternatively, the level boost could be applied to another Pokemon that doesn't fall into that weakness (or, if there's a resistance, to the resistance).
Even if this specific idea is untenable, I'd be interested in seeing any other suggestions / ideas for simple team generation changes that would reduce getting outteamed in rands.