Thanks for that - it's a good point and I wouldn't be at all surprised if I'm writing outside of the bounds of an array somewhere, but why would this only become apparent during a Serial.print()?
Even if I comment out everything except the Serial.print("SELECT:"); in my code, it still crashes, despite not attempting to access any array data...
<pulling_hair_out_smiley_yet_to_be_defined>