Disregard - I figured out a work-around.
Basically, I used a combination of the double eval trick and nested substring-before/after functions to extract the info.
In the repeating table, I created a hidden concat field that put the City and State in a single field.
On the main form, I created a new field (strLocation) with the following double-eval statement using semi-colons to delimit the entries:
strLocation
eval(eval(group2, 'concat(my:strCityState, ";")'), "..")
Then, for each of the VIA fields, I used the following:
via1
substring-before(strLocation, ";")
via2
substring-before((substring-after(strLocation, ";")), ";")
via3
substring-before((substring-after((substring-after(strLocation, ";")), ";")), ";")
Probably not the prettiest solution, but it works!