Yes this is the way if you also add the 3rd party trick.
Have a field with the list and other as a choice. Have a other field with the relevant like you laid out. Have a 3rd field with a calc of if(otherisselected, use 2nd field, use list field). Then set bind esri to null on the first two fields so that they do not submit to the service. That way the result is all in one field in the end.
Domains get tricky. You could have the 3rd field also be a select one so that it builds the domains for you or add manually. You could also use things like jr:choice to grab the value.
At least this is the best way I have seen so far. Hope it helps.