Time limit on for(int loop

I think the best thing to do is to re-implement without the use of delays and for loops. First step is to setup the timer in the global scope:

unsigned long lastCycleTime = 0;
int mixer = 0;

This will be used to check when it's been at least mixer time. When it has, we can set our do nothingflag which will allow us to wait the random 1-12 seconds before we reset our random values and continue. The flag is set in the global scope:

int doNothingFlag = 0;

In our loop body, we are constantly checking the timer. If we are doing something (doNothingFlag is 0) and it's been greater than our mixer time, then we set our do nothing flag to 1 and generate a random time to do nothing for:

unsigned long now = millis();
if ( (doNothingFlag == 0) && (now - lastCycleTime > mixer) ) {
  doNothingFlag = 1;
  lastCycleTime = now;
  doNothingTime = rand(1000, 120000);
}

Now we just need to check if doNothingFlag is set, and it's been at least doNothingTime. If both conditions are true, we can generate new random values:

if ( (doNothing == 1) && (now - lastCycleTime > doNothingTime) ) {
  doNothingFlag = 0;
  lastCycleTime = now;
  // generate new random values
}

Last step is to actually do the actual analogWrites. This almost the exact same thing as the Blink Without Delay code, except that we also change the interval to a random time:

if ( (doNothing == 0) && (now - lastCycleTime > interval) ) {
  // analogWrite stuff
  // generate a random value and set it to the interval
}

The 10 minutes part is pretty easy too, when you understand how to use millis() and the concept of state variables.