I agree with everything you're saying... and, also, in thinking about it further, I believe that having namespaces as a first class feature is the best way to solve this kinda problem.
For example, in Clojure, I can just build my project by excluding the function in question and replace it with my version. Anyone else that wants to use Clojure doesn't need to worry about another persons great idea.
; example
(ns a-project.core
(:refer-clojure :exclude (best))
(:gen-class))
(defn best []
...)
And anyone else wanting to use my library and/or only use my version can do so, simply: