Cache selection of Reference fields
In a recent test saving ~1500 moves takes 140 seconds but that time can be reduced to 85 if get_shipments() and get_origin() methods are cached just like it is done in ir.translation for the get_language() method.
I propose to use the same cache mechanism to all Reference fields in Tryton where that is appropriate (I think it's possible in all cases).