DHT22 Shows wrong values... how do I address this?

In the second sample of your output that you provided, you'll see the output from reading the sensor, and then you print the temperature and humidity four or five times.

This suggests that your loop function is running around four times than the sensor will actually respond. So, three of the four times, you are printing an old value, not a new one. This seems reasonable enough, sort of. But when I look at the actual code, I am having trouble seeing where this is accomplished, exactly. It seems, you should be getting the NaN's sometimes, but you don't.