Running a Datalogger in different Modes

so that Serial is not enabled all the time just sitting there waiting for a command from a terminal program.

I don't follow this. In order to ever be able to send/receive serial data, you'll need Serial.begin() in setup.

Reading the state of a switch on each pass through loop takes longer than calling Serial.available() to see if there is serial data to read.

Reading serial data, and deciding what to do, requires less hardware, and has less impact on the speed of the program than reading a switch.