It is wrong to relate on __FreeBSD_version, either from include/param.h, kernel, or libc, to check for rtld features. Rtld might be from newer world than the running userspace.
Add special private symbols exported by rtld itself, to indicate the changes in runtime behavior, and features that cannot be otherwise detected at runtime.
Note that the symbols are not exported from libc, consumers are required to use dlsym(3). For instance, for _rtld_version_laddr_offset, user should do
ptr = dlsym(RTLD_DEFAULT, "_rtld_version_laddr_offset")
or even
ptr = dlvsym(RTLD_DEFAULT, "_rtld_version_laddr_offset", "FBSDprivate_1.0");
Non-null ptr means that the change is present.