So, when we follow that link, the folder itself, has the notice file, claiming Apache2.0 license. And it doesn’t just repackage the same NDK prebuilt, or the build would only take a few seconds. 
To build the NDK from scratch, following these instructions:
https://android.googlesource.com/platform/ndk.git/+/HEAD/docs/Building.md
I decided to walk through all the prebuilt objects by starting with NDK-r29. Had I known you would reference r25, I would have picked that, I just picked r29, because it was modern. We can pick another if you like. In the manifest file for r29 of the NDK, there are 17 prebuilt repositories, so I went to each repository, and went through all the files.
In each one, there was no EULA, and along with the binar(y/ies), there was a license file provided, they were as follows:
Apache2.0
<project path="prebuilts/ninja/linux-x86" name="platform/prebuilts/ninja/linux-x86" groups="presubmit" revision="8a10824f74fe0e22af9bf314a837f5b70e2bb67f" upstream="ndk-r29-release" />
<project path="prebuilts/ninja/darwin-x86" name="platform/prebuilts/ninja/darwin-x86" revision="f321e197944c19d273cec788b9a3e8ca94331248" upstream="ndk-r29-release" />
<project path="prebuilts/ninja/windows-x86" name="platform/prebuilts/ninja/windows-x86" revision="4d526002f0158a5d103bb6e54d43943c0e1c2778" upstream="ndk-r29-release" />
<project path="prebuilts/clang/host/darwin-x86" name="platform/prebuilts/clang/host/darwin-x86" revision="7d20032ca1970a8390be09b73f6a894905ee8542" upstream="ndk-r29-release" />
<project path="prebuilts/clang/host/linux-x86" name="platform/prebuilts/clang/host/linux-x86" groups="presubmit" revision="a92c8229e4d69f3552cdcd956e3f2b0380a41931" upstream="ndk-r29-release" />
<project path="prebuilts/clang/host/windows-x86" name="platform/prebuilts/clang/host/windows-x86" revision="c8a25b3935d01457157f8094bff6b1ad5e6f7ca5" upstream="ndk-r29-release" />
<project path="prebuilts/ndk" name="platform/prebuilts/ndk" groups="presubmit" revision="c0815fea3a8081be6215440de330c63246e6551f" upstream="ndk-r29-release" />
<project path="prebuilts/simpleperf" name="platform/prebuilts/simpleperf" groups="presubmit" revision="a63e5b546388f4b947d1b310ab3d9bada63bb242" upstream="ndk-r29-release" />
BSD-3
<project path="prebuilts/cmake/darwin-x86" name="platform/prebuilts/cmake/darwin-x86" revision="7aea7e9880110799088cd1de509886871078306f" upstream="ndk-r29-release" />
<project path="prebuilts/cmake/linux-x86" name="platform/prebuilts/cmake/linux-x86" groups="presubmit" revision="e57c88d59d7d8408a32b16425158fd2aa64e2b3e" upstream="ndk-r29-release" />
<project path="prebuilts/cmake/windows-x86" name="platform/prebuilts/cmake/windows-x86" revision="f6283abb0a655968016437be07d04370fd815e6c" upstream="ndk-r29-release" />
GPL 2
<project path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" groups="presubmit" revision="49917e030f76c01f35d5a46b66a2b85b2976647c" upstream="ndk-r29-release" />
<project path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" groups="presubmit" revision="d6b93efcc5c2d123cb44eee4f74d6fd35d5efd9f" upstream="ndk-r29-release" />
GPL 3
<project path="prebuilts/build-tools" name="platform/prebuilts/build-tools" revision="434d914996ecc2abcda46a1841c82946241b1c35" upstream="ndk-r29-release" />
GPL Compatible
<project path="prebuilts/python/darwin-x86" name="platform/prebuilts/python/darwin-x86" groups="darwin" revision="3400487f6a77cc05ee5d4799575372713ce63232" upstream="ndk-r29-release" />
<project path="prebuilts/python/linux-x86" name="platform/prebuilts/python/linux-x86" groups="linux,presubmit" revision="fce2346610379fdcce9dc7423c0e9a04e1a43cbf" upstream="ndk-r29-release" />
<project path="prebuilts/python/windows-x86" name="platform/prebuilts/python/windows-x86" revision="6d619afe3f821388a57b7b2b473bee85debfdd7c" upstream="ndk-r29-release" />
So is it not acceptable to build revision 29 of the NDK as is, with these prebuilds, all including their original license, based on this?
I don’t think this is a slight of hand by Google to trick you into using a contaminated binary, but rather that the build process gets complicated, so you would need this exact revision of say python3.11 to guarantee the build is successful. This gets hard when using one server to build all 29 NDK versions, because each one needs a different revision of python 2,3,3.11, etc. to build.
Also, Replicant is a great project, but unfortunately, they are still stuck on Android 6.0, where the build system is simpler. If I remove these downloaded binaries, I have to have that version/revision number of that binary installed on my server to build with, or I have to replace it with a binary that I compile from source myself.
The only issue I see with compiling them myself is that to compile NDK-r29, I have to compile 17 other projects as well, and not the current version of that project, but the specific version and revision number of the project that corresponds with this version needed for the NDK.
As you mentioned, in recent versions, it also becomes circular. To build the modern NDK, you need the modern Android build tools, which comes from the Android-SDK, which will require you to download the prebuilt NDK to build.
But, if the end product was built using repositories that had no EULA, and just had the precompiled binary, with the original license, is that okay to use?
I apologize if I am missing the point of your question. I literally am the dumbest person I know, so please help me understand better if I am not understanding correctly. I will not take offense. 