This article describes and issue with saving Metafields when working with OrderAddress. When trying to save the payment billing address as follows:
IOrderAddress address = GetDefaultBillingAddress();
address.Id = Constants.Order.BillingAddressName;
address.Properties["IsValidated"] = true;
address.Properties["UserChoosetoOverrideValidation"] = true;
payment.BillingAddress = address;
ServiceLocator.Current.GetInstance().Save(cart);
All properties are saved properly except the MetaFields. They are all NULL.