Having worked for a credit union for 6 years, I think I understand what you want and yes, your hmmm maybe it would work solution does work quite well.
You need to keep a table of historical exchange rates, and thats the way to think of them, historical (including the current one) with a day parameter. Then keep a table that is only the currency and the to/from exchange rates. Performance will go up (although you'll have some recoding to use this new table name and remove the date check). Your historical rate table will continue to grow and grow and grow at a rate of 6 currencies a day (for now). Your current exchange table will stay the same size.
This gives the ability to do historical reporting/calculations when its necessary but makes the current transactions work faster.
Chris