Arduino analog signal read problem?
I'm not sure if this is a valid answer or not, but I'm going to submit it anyway since there is a remote chance that it's helpful.

In other microcontrollers that I've used before, you need to have a settling time between ADC channel reads, or the previous reading is likely to affect subsequent reads.  I haven't used the ADC on the Arduino yet, but perhaps there is either a library function you can call so that there will be a processor-dependent sleep / delay that is used when reading ADC channels.  In either case, you can easily test this theory out by delaying between ADC channel reads to see if the problem goes away.