Hola,
En este post del foro hay más información sobre el tema
http://social.microsoft.com/Forums/en-US/dynamicses/thread/1daa9049-aec6-44d5-bfc4-39a44015cc59El problema es basicamente el número de sockets que se pueden abrir en un periodo de tiempo ya que estos tardan en cerrarse. Como se comenta en el post hay varias técnicas para evitar estos problemas.
La idea del singleton no es mala, el principal problema es que si usas la misma conexión no estás impersonando a los usuarios. Es decir todos usan las mismas credenciales con lo cual puedes tener problemas de seguridad. También mencionar que puedes conseguir el mismo efecto usando UnsafeConnectionSharing sin tener que implementar un singleton, .Net se encarga de reutilizar la conexión. Es más, bien usado el UnsafeConnectionSharing con GroupNames puedes llegar a permitirte tener una única conexión por usuario mitigando el problema del número de conexiones sin llegar a tener problemas de seguridad.
Un saludo
Marco Amoedo - http://marcoamoedo.com