Your current approach is appropriate and is sometimes how the tagname/attribute association is made in AF. The downside is the manual maintenance of the attribute-to-tagname mapping within AF.
Via the AF Wrapper approach, you should be able to query the AFAttribute.ConfigString property and parse out the tag name. Another approach is inspecting the AFAttribute.PIPoint.Name property.
I have tested the approach described by putting the text attribute on the ProcessBook display, hiding it, referencing it, and using it in code. It took me a little while to get the details correct.