They’re also listed on the libp2p github as a user of the library under the old project name locutus, also seems to be historical.
The current code for freenet-core only has 2 instances of libp2p:
$ grep -r "libp2p" .
./README.md:[libp2p](https://github.com/libp2p/rust-libp2p) which we use for low-level
./crates/core/src/node.rs://! - libp2p: all the connection is handled by libp2p.
Even more interesting. Would love to know why they switched. I do know PR’s can take an age to get into libp2p and maybe that frustrated them, but seems they have quite specific use case here and perhaps it was easier without all the other bits??