Почему для static-метода нельзя опустить имя класса?
Потому, что вы импортировали пакет java.util в котором содержится класс Collections и при его использовании вы указываете название всего класса. Если хотите сделать как вы сказали, то вам надо использовать статитеское импортирование. Т.е. добавить import static java.util.Collections.reverseOrder;
Рекомендую прочитать про static import. Думается мне, это вам поможет для конкретно вашей задачи.
Если по существу - для имплементации вашей хотелки необходимо при компиляции обойти все классы в classpath и проверить наличие там данной функции и только после этого записать в байт-код вызов конкретной функции.
Кроме того, непонятно, как работать с коллизиями.