Most software can be compiled with --prefix=/usr/local, and then it will store stuff in /usr/local/share, /usr/local/etc, and so forth.
In fact, /usr/local is actually the default for a lot of programs; you manually have to specifically --prefix=/usr if you want to use that.
I used to maintain a bunch of FreeBSD ports, and whenever this wasn't supported I'd send a patch upstream, which was pretty much always accepted. In a few cases: yeah, you'll have to patch the paths, which is not ideal, but it's a lot less patching than what Debian does, which often has more changes and backports security fixes etc.