I realise "eliminate" is not really necessary, it would suffice to just allow setting a a sane default per database, and make that value immutable, then all data structures and code using wouldn't need to change, one would then only need to change the code that can mutate search_path, to prevent that from happening.
I understand that for some specific cases the search_path can be problematic. On the other hand, the SQL database supports interactive work, and then the search_path can save a lot of monkey work.
It is the same as using the command line without the possibility to customize the PATH variable. The advantages and disadvantages are exactly the same.