Based on your comment,,"The routing of the internet is still hierarchical and filters down through blocks to be efficient," you don't seem to understand the Internet.
The Internet is very decentralized. Each ISP connects to any other ISP it wants to, and the addressing is not hierarchical, as you seem to think. Yes, ISPs agree to get address blocks from some central authorities (RIRs), but the address blocks are not assigned in a hierarchical fashion (and with the IPv4 shortage, it gets worse as companies buy and sell address blocks to each other). For example, ISP A gets
18.104.22.168/16, and it peers with ISP B that has
22.214.171.124/22, and it also peers with ISP C that has
126.96.36.199/16. The ISP addressing may be somewhat hierarchical within an ISP (only within any one of the assigned address blocks), but between ASes, it is certainly not. AS is Autonomous System, and each is autonomous from every other AS.
In any case, IP is going to be hierarchical at a local level in an assigned address block if the single address block is broken down into different networks. That is the nature of IP, and just about any layer-3 protocol. But, you could have multiple address blocks that do not relate to each other.
There used to be many layer-2 protocols that were strictly peer-to-peer. For example, ethernet is peer-to-peer. It has seemingly random addressing (MAC addresses), and hosts on an ethernet LAN communicate directly through ethernet and MAC addresses. There were LAN protocols that simply used the LAN addressing, and they were peer-to-peer.
If you want to communicate with a host in a different LAN, then you must pass through a layer-3 device (router), and that device must have knowledge of how to reach other layer-3 networks. That may be through other routers, or it may be directly attached to the other networks. The different networks do not need to be consecutive, hierarchical or even the same size.
One thing you wrote seemed to indicate that you may think that the different octets in an IP address have meaning, but they do not. They are simply to make it easier for humans to read the address, which is a 32-bit binary number. A network mask will indicate which part of the 32-bit number is the network, and which part is the host address, and that can vary a lot, and it often doesn't fall on the octet boundaries. For example, the address
10.11.12.13/15 is in the
10.10.0.0/15 network, not the
10.11.0.0/15 network. The network part of the address ends before the end of the second octet. That network could be attached to a router that has wildly different addressing on the other interfaces of the router, so it is not inherently hierarchical.
A host that communicates with another host on the same ethernet LAN will communicate directly with that host. The host will compare the destination layer-3 address with its own layer-3 address and mask to determine that the destination is on the same LAN, and it will then create a layer-2 frame addressed to the destination host. This can use IP as the layer-3 protocol, and it is still peer-to-peer.
If the destination host is on a different network, then the source host will use the layer-2 address of its configured gateway as the destination address in the layer-2 frame it creates, and the layer-2 frame will be delivered to the gateway.
The gateway will strip off the frame, losing any layer-2 addressing (both source and destination). The router will look at the destination layer-3 address and search its routing table for a match. If there is no match, the packet is dropped. If there is a match, then the router will create a new frame for the interface indicated in the routing table, and it will forward the new frame out that interface. This is where you lose peer-to-peer, although the addressing may not be consecutive or hierarchical.
On a single LAN, you can have a true peer-to-peer connection, but to get from one LAN to another LAN, you must have some type of map and a way to get from one LAN to another LAN.
The part about the higher level protocols creating peer-to-peer networks is really off-topic here because protocols above OSI layer-4 are off-topic here.
The problem with scaling on a layer-2 peer-to-peer network is that broadcasts must be used, and at some point, broadcasts will overwhelm the regular traffic. When a host receives a broadcast, which is sent to every host, it must interrupt whatever it is doing and check to see if the broadcast is for it.
At the start, a host will not know its neighbors and addresses, so it must broadcast in order to discover a particular neighbor. It can then build a table that includes that particular neighbor. The table will have limits, and entries in the table must also time out or it will end up with a bunch of dead neighbors in it. To populate the table, the host must first broadcast for the neighbor to which it want to communicate.
At some point, the LAN will be saturated with broadcasts, and it will collapse under the weight. That is why we limit the size of LANs and impose layer-3 networking, which can have some type of hierarchy, or maybe not.