Inheritance from java.lang.Object does not make Clojure data mutable.
Blocking for IO does not make Clojure imperative, it not a purely functional language, but its still a functional, not imperative, language.
It's possible to build a service in a purely functional language using non blocking IO that also takes minutes to render. No language will save you from a bad design.
I do agree that Clojure is not the most suitable language for large projects with lots of contributers because of it's dynamic nature.