The problem with the play overuse slope and making it more punitive is that not every playbook has all of the plays. That means it's particularly difficult to build a playbook with 40 effective plays (unless you're really, really good at data analysis).
Even if you can construct a playbook with 40 plays, the play matrix WILL CREATE overuse scenarios because it DOES NOT call plays with EQUAL weight. I basically have my short and medium passes to be called equally. What happens is one play will get called 5-8 times and others plays 0. That means THE AI PLAY CALLING puts me into overuse that is no fault of my own.
The way to fix this is simple. Have a weighting mechanism so that as a play is called it is less like to be called again until all plays of that distance or type are called as adjusted by the play matrix (so if I only want to call the 311 sets 1 out of 100 times adjust the weight by 1/100). That would mean teams would cycle through their entire playbook every game.