Ensure we only save the "cleaned" model to the DB

* Extract the model cleaning logic to a method for re-use
* Call cleaning method from ConvertEditorToDb  (we were only calling on ConvertDbToString (cache))
* Update ConvertDbToEditor to route through new deserialization helper, so that it gets the "virtual" properties it needs that were lost in the cleaning