B_Mariner:
- is my problem what I think it is?
Apparently you have more than one problem.
- will any of my possible fixes, fix the problem?
See 1.
- is there a more efficient way of doing what I'm trying to do?
Depends what you mean by more efficient. A couple days ago I posted a sketch on the forum for receiving 'key=value' pairs sent to a Serial port.
http://forum.arduino.cc/index.php?topic=234987.msg1692254#msg1692254
While it is not a particularly efficient comms protocol, it addresses the edge cases and mistakes which comms programming beginners often struggle with. Borrowing my code and focussing your own effort on your application's control logic, might be more efficient use of your time.