Hi Nick,
The only option I can think of is if there are a static number of digits after the GMVM string. If so, you could potentially use string match to check for a match and then parse the hostname. However, I'm not sure that's going to be very elegant compared with the regexp command.
Once you get that version of the iRule working, you could consider testing a version which uses regsub from HTTP_RESPONSE_DATA to replace the internal hostname with the external one. It might be simpler than using a payload collect and a stream expression.
Aaron