"Who on earth thought that 128-bit addresses was a good idea?"
A fair question, with a fair answer. The short answer is that you aren't supposed to use all 128 bits. The first few (for some variable value of "few") classifies the address type, the next few up to 48, 56 or 64, tells you the "destination network" and the final 64 is enough space to allow devices to assign their own addresses efficiently without fear of conflicts.
In addition to this separation, address allocation protocols are designed so that devices inside such a "destination network" can be easily re-assigned to a different prefix. This makes large-scale re-organisation of the network possible. IOW, IPv6's designers looked at the Balkanisation of the IPv4 address space in the 1990s, saw that by 2010 or so the major interconnects were going to need billions of entries in their routing tables, and decided to design a system that could "repair itself" from that kind of entropy.
The sheer length is mitigated by header compression strategies (in binary formats) and the various conventions for text formats. In any case, nearly all configuration should use DNS names and so almost the only things you need to know the numerical addresses of are your DNS servers and gateways. Those can be assigned hand-chosen addresses of the form "prefix::small-integer". If even that fails, you can ask a local subnet for its nearest host of a given type by using well-known multicast addresses.
In short, the designers of IPv6 were and are network people who grovel over these long addresses for a living and they designed it that way to make their lives easier. It is deeply puzzling that the greatest opposition to IPv6 appears to come from others in a similar line of work who have simply memorised all the arcane warts in IPv4 and are apparently afraid to learn about a much cleaner system.