One likely culprit is array bounds violations. It looks like you're using constrain statements to defend against that, but your usage is not correct. Constrain returns the contstrained number, it doesn't change the value it is passed. So this:
constrain(hum1MinIndex,0,6);
Should be this:
hum1MinIndex=constrain(hum1MinIndex,0,6);
You might want to grab one of the freemem functions regularly posted here to see how much RAM you have left. Given that you've started moving strings to progmem with no effect, it likely isn't an issue, but it might give you the necessary comfort to consider moving code back into individual functions again.