Скажите, пожалуйста, то, что при каждой сборке IDE пишет, что грэдл скачивает зависимости - это нормально? Внутри он также к кэшу обращается или должен как-то иначе писать?
Это может быть если отключено кэширование динамических и изменяющихся версий, ну и у вас такие есть. Но я бы для начала проверил поведение в командной строке
можно ли с помощью грэдла заменить файл из какой-либо либы? например в либе есть файл com.xxx.foo.java а я хочу чтобы использовалась моя реализация com.xxx.foo.java
Если там JPMS и module path, то, да, artifact transformation. Если classpath, то можно свой класс собрать, и в classpath его пораньше поставить -- он и подхватится