Plus wastage due to subnetting (network address, broadcast etc)...
Imagine trying to segment a network of that size, and then trying to keep track of what was in which segment etc... Would be quite a nightmare.
Allow me to point out a couple of IPv6's features for you:
- IPv6 is designed to be hierarchical, so knowing the location of a segment will be easier than IPv4. Each /64 is routed under a matching /48, which is under a /32, etc..
- All subnets should be /64's
- IPv6 does not use broadcast IPs. It has various multicast addresses with the prefix ff00:/8 to address the link-local domain (~=broadcast), site-local domain, etc.
- Don't think of "wastage". By design every subnet should be a /64. The host address is intended to be globally unique, so there are 2^63 available globally-unique host addresses that by design can move to another prefix and still be unique within that prefix. If you don't want to use a globally unique ID, there are also 2^63 non-globally-unique IDs, and for example prefix::1 is one of them. By your thinking the IPv6 waste is colossal, but it's not waste, it's a design feature which allows hierarchical routing and collision-free merging of subnets.
- Routers need not take up a public IPv6 address if you're that desperate for space (which you aren't, I promise). All IPv6 hosts have a link-local address (think 169.254.0.0/16, but always there), and the router can advertise a route on the link-local address