Не съм сигурен дали това се отнася точно за вашия случай, но имах много подобна ситуация с много време, загубено в ClassUtils.forName() и ClassLoader.load() .
Проверих ситуацията под дебъгера и основната причина в моя случай беше, че класът, към който се опитвах да десериализирам документа, беше преместен в различен пакет. В този случай Spring Data не може правилно да кешира информация за типа и издава бавен и скъп ClassLoader.load() на запазения _class поле за всеки документ !
Разбира се, това зареждане на клас е обречено на провал, защото препраща към клас, който вече не съществува на мястото, съхранено в _class поле на документа.