С тех пор я смог решить это. На случай, если это кому-нибудь пригодится, это то, что я сделал. Запрос настроен, как и раньше, за исключением того, что я добавил свое настраиваемое поле в ColumnSet.
cols.Attributes = new string[] { "firstname", "lastname", "new_web_username" };
А затем использовал RetrieveMultipleResponse и Request с ReturnDynamicEntities, установленными в true
RetrieveMultipleResponse retrived = new RetrieveMultipleResponse();
RetrieveMultipleRequest retrive = new RetrieveMultipleRequest();
retrive.Query = query;
retrive.ReturnDynamicEntities = true;
retrived = (RetrieveMultipleResponse)tomService.Execute(retrive);
Пожалуйста, все же прокомментируйте, если есть лучший способ для меня сделать это.
EDIT
Используя пример из моего исходного вопроса, если вы приведете к контакту
contact myContact = (contact)myService.Retrieve(EntityName.contact.ToString(), userID, cols);
После этого вы можете получить доступ к свойствам объекта
phone = myContact.telephone1;
password = myContact.new_password;
Если вы обновите свои пользовательские поля CRM, добавленные в CRM, будут доступны.