Buenas
Por lo que ido viendo estos días, aquellas clases que no se pueden serializar, les pones el atributo Serialize y luego implementas la interfaz. Si la interfaz el metodo GetDataObject, lo dejas en blanco te va a guardar un objeto vacío. Por lo que si queremos guardar las propiedades que luego modificaremos, podemos hacer lo que comentas de guardar las propiedades serializadas en una clase a parte o bien guardar las en el metodo GetDataObject.
Como esto lo hago en WPF Y cada user control es un mundo parte, me es "más facil" implementar los métodos GetDataObject por que en cada uno guarda propiedades distintas,y a demás tengo los users controls cuyas propiedades son otros users controls, y así por si solos se van llamando a los métodos GetDataObject.
Pero la idea que has propuesto no esta nada mal.