It isn't clear the problem that you are experiencing. Any entity in CRM that has a money field also has a currency field (transactioncurrecyid as you point out). This means that each record can have its own currency, so the preferred currency for account
a, for example, can be USD and for account b can Euros. I don't see how adding a currency to a contract should have any bearing on the currency on an account unless you have some form of workflow.