critical path in lookup of DBPortPool

critical path in lookup of DBPortPool: if 2 threads pass by and find no 
DBPortPool for the same addr, then 2 DBPortPool objects will be created
and returned, but only one of them is actually stored in the _pool map
(side effect is that on close() only one DBPortPool will be closed);
note that this patch will make the _pool object a non synchronized map
to avoid double synchronization