ADC readings problem: built in vs external ADC unit
I have been using external 16-bit ADCs with Arduino, e.g. LTC1859.  You need short leads to the ADC otherwise SPI will get noisy and lead to data corruption.  If you are not already doing it, a PCB with routed and shielded traces also helps keep down the analog noise.  Use a clean voltage source instead of USB.

According to the data sheet for your sensor, new data are available much faster than you need (10 ms vs. your 500 ms).  You can take advantage of this to minimize effects of noise by signal averaging - e.g. moving average, or taking average of blocks of data every 0.5 s.