Not sure if possible, but is there a way, within a Formula Field, to refer to a related object field by name, as a calculated string? For example (this doesn't work):
Purchase_Price__r['Original_amount_'+$User.Reporting_Currency__c+'__c']
Where Purchase_Price__c
is a lookup for the Currency Amount object, which has fields such as Original_amount_USD__c, Original_amount_CAD__c, etc; and where Reporting_Currency__c is a field on user that will contain USD, CAD, etc.