I actually found it interesting that in spite of what is a clearly overly simple model, the non-legendary non-multi-starter you eventually get is quite a good one, in my opinion better than what the naive constraints would lead me to think.
Also, keep in mind that I'm not talking about competitive matches here, just mainline gaming. For that end, types are usually all you need, and in that area the main thing I would do is generalize type constraints to not be just defensive but also ensure each resistant Pokémon has a good enough attack against that type.
In my opinion, abilities, nature, objects are: 1. Too complex for such models (MIPs are still exponential-time) 2. Overkill strategy when all you wanna do is beat the league
But that last part is just my opinion.