The equivalent of getResultValueByName() is very easy to implement using tools available to you.
Create a dictionary of integer
DEFINE d DICTIONARY OF INTEGER
Populate it using base.Sqlhandle.getResultName()
FOR i = 1 TO h.getResultCount()
LET d[h.getResultName(i)] = i
END FOR
And then you can code
DISPLAY h.getResultValue(d["column-name"])
as an equivalent to the
DISPLAY h.getResultValueByName("column-name")
you seek.
As previously noted, you can explore what base.SqlHandle.getResultName returns for expressions, aliases etc, and make appropriate allowances in the above suggestion.
Performance wise, you can always measure performance using the profiler
http://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_profiler_001.html and come to your own conclusions. They key thing with base.Sqlhandle is developer productivity. If you code every SQL in your system, using base.SqlHandle, your developers will be slower, but if you can code a generic function using base.SqlHandle and reuse that generic function over and over then your developers will be faster.