forEachCollectionFromDb() grabs the collection UUID from the UUIDCatalog iterator, however between getting the UUID and resolving the namespace string, the collection could be dropped as we're not holding any locks and it would return the empty namespace string, hitting an invariant later on.
Additionally, lookupNSSByUUID should use the CollectionCatalogEntry to retrieve the NamespaceString in the event that the Collection pointer is dropped.