Help with Design: Using processor time efficiently when dealing with serial

Separating the two communications accomplishes what you want.
Your main loop periodically sends a serial message to read the temperature and stores it in a variable.
The loop also checks for a touch screen request. If it is a request for temperature it immediately sends the variable value.
(there is no additional transmission and wait). It processes any other type of request.
Then it begins the loop again. The only trick is to perhaps snap the time (millis()) when you last read the temperature, so that you can compare it to the current time and not read it too quickly.
This way, no delay is used. You get instant response to your touch, except if it happens to be in the middle of a temperature measurement communication.