1) Your solution seems fine to me, apart from the fact that the reference selector apparently does not display the values of the calculated attribute correctly.
2) Using a calculated attribute might have a small performance impact, as the entire object is retrieved and passed to the calculation microflow, as opposed to just retrieving a single attribute value from the database for each object in the reference selector. However, if you're not showing too many objects in the reference selector, this should not cause any visible delays.
3) It appears that the reference selector does not handle calculated attributes correctly at this moment (2.4.6). You can file a bug report for this in our partner portal.