How can I speed up the ADC?

If you want to maximise the ADC conversion rate, use the conversion complete interrupt (see the atmega328p datasheet). In the interrupt service routine, read the adc result and store it in a variable appropriate to the channel you have just sampled. Then set the adc mux to the next channel (or back to the first channel, if you have done all the channels of interest) and kick off another conversion. Like this:

const byte numAdcChannels = 6;
volatile unsigned int adcResult[numAdcChannels];
volatile byte currentAdcChannel = 0;

void startConversion()
{
  ADMUX = (B01000000 | currentAdcChannel);   // Vcc reference, select current channel
  delayMicroseconds(5);    // only needed if using sensors with source resistance > 10K
  ADCSRA = B11001111;   // ADC enable, ADC start, manual trigger mode, ADC interrupt enable, prescaler = 128
}

// Interrupt service routine for ADC conversion complete
ISR(ADC_vect) 
{
  // The mcu requires us to read the ADC data in the order (low byte, high byte)
  unsigned char adcl = ADCL;
  unsigned char adch = ADCH;
  adcResult[currentAdcChannel] = (adch << 8) | adcl;
  ++currentAdcChannel;
  if (currentAdcChannel == numAdcChannels)
  {
     currentAdcChannel = 0;
  }
  startConversion(); 
}

void setup()
{
   ...
   startConversion();
}

Then in loop() you can look at the adcResult variables and work out what needs to be done. You should disable interrupts while reading them in loop(). If you change program the ADC to use only 8-bit accuracy, then you can use a byte array instead of an unsigned int array, then you do not need to disable interrupts when reading them.

BTW using a delay inside an isr should generally be avoided, however very short delays to allow hardware to settle are OK.