The attached patch supports both styles. The heuristics didn't turn out to be as hairy as I imagined.
But my patch is not pretty. I'd be glad to attempt to improve it if there are any suggestions.
One last time I'll advocate the change I was thinking of initially: re-add the "ROOT/../site-lisp" entry to PATH_SITELOADSEARCH in epaths.nt, as in the attached patch.
It would be possible to add a similar entry for Unix-like systems (by modifying locallisppath in configure.ac), but to me that seems a weird thing to do. I have not considered the NS build that Stefan mentioned.