why cant we overload methods by just changing the return type?
Overloaded methods are selected at the compile time using the reference variable unlike the overridden methods which are selected at run time known as Run Time Polymorphism, on behalf of what object the reference variable refering to.
If you just change only the return type of the overloaded method, compiler has no way to find which method to choose. There is one and only method selection criteria in the case of overloading and that is the number of arguments and there type and their order.
No matter what the return type is, but the argument criteria(said above) must be followed.