Hello Olly,
Sounds like you have tried most of the causes. It must be something company specific.
I think running a SQL trace restricting the trace to the user you are logging into the GP company in MR with may help. The one odd issue that stands out to me, and I cannot remember the table numbers, is a currency index was mismatched between the two tables. One was for sure the MC40200 in the DYNAMICS DB and I'll see if I can find the other. In my scenario the currnidx was not a viable index. Maybe it is the MC40000 in the company DB.
Thanks!
DFC Consultants