I would say the biggest problem with the engine is that it is too consistent. IMO, advantages are systematically whittled away by the engine structure mainly because they are not based on a single distribution curve. Because of this, results all get pushed towards the middle or the results curve. The engine cannot be tweaked to say if the offensive line is 1 standard deviation better than the defensive line (all else being equal), the offensive line will perform one standard deviation better than average. You can't say because your RB is one standard deviation worse than other RBs that he will perform one standard deviation worse relative to other RBs.
This is my understanding of what happens:
The play is broken into several steps and each step has three distributions: even, slightly better/worse, much better/worse. It's not entirely clear to me that there aren't severe overlap problems within these three distributions. I think it's highly likely that, even if you fell into the even category, you could get a good roll and wind up with the same outcome as much better/worse and move onto the next step. Now this happens over several steps in a play, so the results get even more muddled. There's no way to drill down into results to fine tune it without experimenting and possibly screwing up everything else because of the overlap. It's a multi step, multi distribution result that may make sense to a programmer, but doesn't make sense from a statistical or modeling slant.
This has been my issue with the engine structure since inception. Using steps and buckets muddles everything and increases the chances of having very similar outcomes on a play by play basis. It's also more difficult to make changes because you can't isolate particulars without having to adjust everything else to ensure that you're not screwing something else up with the correction.