Just tried this out for myself, and you’re right, even with play deactivated it still cooks for the same length of time. At the very least, you can stick a null with cook type set to selective after the LFO, which stops the rest of the operator chain from cooking if the actual values being passed through aren’t changing.
Try this approach: Bypass the lfo operator in python
op('lfooppath').bypass = True
, but make sure you have a constant with the same channel names that your lfo is outputting, and wire the constant into the first input of a replace, and the lfo into the second input of the replace (all this before the selective null if you added that). Make sure you use a replace and not an override, on my machine for 500 channels replace uses .01 ms where override used 2.0 ms.
Could also use Switch CHOP with Constant CHOP as the second source. That way you don’t have to script any bypassing, you can just switch to Constant when you don’t want LFO. To ensure Constant has same channels as LFO you can use Constant CHOP’s Snap input.