Я думаю, можно копнуть чуть глубще и использовать не готовый CrmService a основополагающие классы WCF. Возможно это позволит более гибко управлять времененм жизни и открываеммыми TCP сессиями:
X++:
String serviceUrl = "http://localhost/FixRM/XRMServices/2011/Organization.svc"
SymmetricSecurityBindingElement security = new SymmetricSecurityBindingElement(new SspiSecurityTokenParameters());
HttpTransportBindingElement http = new HttpTransportBindingElement();
CustomBinding binding = new CustomBinding();
binding.Elements.Add(security);
binding.Elements.Add(http);
OrganizationServiceClient client = new OrganizationServiceClient(binding, new EndpointAddress(serviceUrl));
Не совсем корректный пример, так как класс OrganizationServiceClient генерирован с веб реверенса при помощи студии, но идею вы, думаю, уловили.