And we can't simply dump the whole v4 range into a sub-section of v6 and call it a night either.
While it may work for the v6 side, the v4 side will have a hell of a time talking to anything on the v6 without some kind of network level NAT going on...
This is actually quite widely used (see [1]). The big limitation is that all connections have to be initiated from the IPv6 side, so it's usually used to allow v6-only client networks to access v4 servers, but even that is a big win for bootstrapping - for example, it's let T-Mobile configure all its new Android devices for IPv6-only behind a variant of NAT64.
Another cool trick is IPv4-mapped IPv6 addresses [2], which lets userspace software act like the IPv4 internet is just a subnet of the IPv6 internet, and speak IPv6 only, while the network stack of the host system deals with the annoyances of dual-stack. (In fact, I think on Linux systems this will even let you pretend that an IPv4-only configuration is actually IPv6 ;-) ).