The very first thing the developers need to do is make talent equal across the board. I mean, when you run a test game with two of the same teams, the results are always going to be extremely close. When you test a game against a team slightly worse, the better team will always win, regardless of game plan or fatigue settings.
THEN, once that is implemented, that's when you start adding the extra stuff. Start accounting for fatigue. Allow certain players to play above/below their level a small percentage of the time. If a Shotgun offense is throwing against a 4-4, they should have more success, etc.
That way, the foundation is built on the fact that talent always wins (which it should be). The extra stuff allows lesser teams to try and adjust things in their favor, and even get lucky every so often with a big game from some marginal players. Ironically, I think this is how 1.0 was built, or at least it acted like it.