`DataTypeFactory::get` locks a mutex inside shared a context, there was a case when many threads were locked inside it

https://pastila.nl/?0043b3e6/c557368f4cf0eb87a3c6f2cc162bc693

It is not clear which thread locked the mutex for a long time. However, it may be possible to lock less inside `DataTypeFactory::get`.
ExternalLoaderXMLConfigRepository * external_dictionaries_config_repository = nullptr;
    scope_guard dictionaries_xmls;
    ExternalLoaderXMLConfigRepository * user_defined_executable_functions_config_repository = nullptr;
    scope_guard user_defined_executable_functions_xmls;
#if USE_NLP
    mutable std::optional<SynonymsExtensions> synonyms_extensions;
    mutable std::optional<Lemmatizers> lemmatizers;
#endif
    std::optional<BackupsWorker> backups_worker;
    String default_profile_name;                            
    String system_profile_name;                             
    String buffer_profile_name;                             
    std::unique_ptr<AccessControl> access_control;
    mutable UncompressedCachePtr uncompressed_cache;        
    mutable MarkCachePtr mark_cache;                        
    mutable UncompressedCachePtr index_uncompressed_cache;  
    mutable MarkCachePtr index_mark_cache;                  
    mutable MMappedFileCachePtr mmap_cache; 
    ProcessList process_list;                               
    GlobalOvercommitTracker global_overcommit_tracker;
    MergeList merge_list;                                   
    ReplicatedFetchList replicated_fetch_list;
    ConfigurationPtr users_config;                          
    InterserverIOHandler interserver_io_handler;            
    mutable std::unique_ptr<BackgroundSchedulePool> buffer_flush_schedule_pool; 
    mutable std::unique_ptr<BackgroundSchedulePool> schedule_pool;    
    mutable std::unique_ptr<BackgroundSchedulePool> distributed_schedule_pool; 
    mutable std::unique_ptr<BackgroundSchedulePool> message_broker_schedule_pool; 
    mutable ThrottlerPtr replicated_fetches_throttler; 
    mutable ThrottlerPtr replicated_sends_throttler;