Trying to make a standalone signal system...

Try this for the flashing:

void setSignals() 
{
for (byte n = 0; n < numSignals; n ++) 
  {
  digitalWrite(signalPin[n][green], LOW);  // set all colours off
  digitalWrite(signalPin[n][yellow], LOW);
  digitalWrite(signalPin[n][red], LOW);
  if(colourOfSignal[n]==flred)
    {
    digitalWrite(signalPin[n][red], flash);
    }
  else
    {  
    digitalWrite(signalPin[n][colourOfSignal[n]], HIGH); // set one colour on
    }
  }
}

You will need to set flred to some other value, 3 perhaps. At the moment it's the same as red.