It is not a nightmare. Finding and resolving references is what the linker does.
Finding and resolving references to installed libraries, yes. But the linker can't tell me what library I don't have installed.
If I copy a sketch posted on the forum/web/bathroom wall, the sketch currently must list all libraries needed. I like this feature. There is no need to install all the libraries listed in the sketch, only to find out that I need 14 more libraries, and then I need 7 more, and the 3 more, and then one more.
It's not just libraries. If I created a .cpp file and include a contributed library header, arduino IDE doesn't properly include that library's path when compiling the .cpp
The Arduino IDE makes a list of files to copy. That list includes all .ino/.pde files in the current directory, all files included by the sketches, and any .cpp files in the current directory that go with any header files in it's list. Then, it adds source files from libraries folders for header files that it does not yet have source files for.
When the list is complete, everything gets copied to one directory, and compiled there. There are no paths involved in the build process.