How to apply fcurve modifiers on top of each other, like object modifiers? I have a looping animation made up of a few keyframes and a Cycles fcurve modifier.

I'd like to introduce some random variations so it doesn't look like an exact loop, however the cycles modifier always appears to be applied last; random patterns produce by the noise modifier are repeated as well:



Is there a way to do this without adding a ton of empties and constraints?
Have you considered the NLA?

Add Noise to your original fcurve.

Cycle with strip repeat
Add Noise to the NLA strip 



Add Noise to the animated influence 

Add noise to the animated strip time.



Produces some random patterns over the cycles, with a fair touch of overkill.  Just the repeat and noise modifier in the NLA would suffice.