I made some graphs about Enhancement Shaman to try to figure out if a closed-form model is even possible. Each point is the result of 10k hours run, giving a standard deviation of .0001. I'm almost certain that the Flurry model used is wrong, but that shouldn't effect the overall shape of the graphs.
Unless otherwise specified, all graphs use 25% crit, two 2.6 speed weapons, 0% haste, 22% hit.
Crit vs. Flurry uptime:
A nice smooth graph. 1 - (1 - crit^5.5) fits the data with an average error of .58%. Although WF and Flurry interactions are ugly, they appear to actually be insignificant enough that they may just be ignorable.
Crit vs. WF proc rate:
Note that all of the bumps are significantly larger than the expected variation produced by the RNG, so it actually is that bumpy. However, note also the data range -- the proc rate varies from 15.70% to 15.59%. This is so minor as to be ignorable.
Overall, with weapons with matching speed, crit rate appears to not need a full set of simulations -- its effect on WF proc rate can simply be ignored, and flurry uptime merely requires a single run to find the exponent for a certain speed. If the same holds true for unmatched speed situations, then the required data set drops to 20480 runs.
Haste vs. WF Proc rate:
As the graph doesn't make it clear, the jumps are when the speed is (flurried/unflurried): 1.49/1.8, 1.361/1.614, and 1.27/1.49. Luckily, these are exactly where expected. Each individual section is non-linear, but the total variation is under .3% for all of the sections, which is low enough to ignore.
Haste vs. Flurry uptime:
The jumps are at the same points as with the WF proc graph (and are probably caused by the drop in WF procs). The individual sections fit an equation of the form uptime = b + m * haste, with m constant across all of the sections. My copy of Excel is missing the data analysis addin, and I don't really feel like doing a logarithmic regression by hand, so I don't know the exact values.
For weapons with matching speed, haste effects appear to need only 5-10 runs to build the complete curve. If unmatched speeds work in the same way, this makes the required data set drop to 6820 runs. In addition, the simulator I'm working with currently takes about 10 seconds per run. This would reduce the total time require to produce a data set down to 19 hours.
There's a lot more that I need to look into still, but it looks like although the interactions between haste effects and windfury are very complicated, it may be possible to simplify or ignore enough of them that it's possible to build a closed formula for shaman dps which is backed by a simulator-generated dataset in a realistic amount of time.