Experiment - split up analog read in 3 steps

You can speed up the time it takes by adjusting the prescaler value. I played with it below and this didn't change the number of bits generated for me.

ADCSRA = ADCSRA & 252; // Speed up adc conversion by adjusting adc clock prescaler

The scaler can be further reduced providing even more of a speedup if less precision is needed. In the sketch I did this on, I was able to read (and write to SD card) about 12,000,000 bytes per day. With this prescalar change I got 40,000,000 bytes per day.

And this can be combined with your approach, if less processing is needed during the analog conversion.