A modification form is to be used by an OnTaskChanged activity which has nothing to do with the workflowProperies.InitiationData property. The data of the Contact Selector is found in the extended properties of the AfterProperties of the OnTaskChanged. You can still use the xsd generation tool to create the class as described above. You will not however be deserializing the entire form as this page describes, but only a part of the section representing the Contact Selector.
The Contact Selector requires that you define a repeating record named Person when defining the data structure in Infopath. When you use the xsd tool, it will create a .NET class called Person. This is the type you want to deserialize from the extended property named gpContactSelector. Example code that worked for me:
string gpContactSelString = MyOnTaskChanged_AfterProperties.ExtendedProperties["gpContactSelector"] as string;
XmlSerializer xSer = new XmlSerializer(typeof(Person));
XmlTextReader xReader = new XmlTextReader(new System.IO.StringReader(gpContactSelString));
Person person = (Person)xSer.Deserialize(xReader);