There are actually 2^128 possible IPv6 addresses. Ok, then you can cut it down by looking at BGP etc as proposed. But consider that the minimum IPv6 network every user gets is a /64 = every user has 2^64 addresses on his home network, just scanning one single user is not feasible. Not to even think of scanning the entire internet.
You can split an IPv6 address into blocks. The first 32 bits tells you what ISP. This is the part where the BGP trick can help. The next 32 bits is the network number. And the remaining 64 bits known as the interface identifier are more or less random assigned by the computers.
You can assume that the user router will respond to the all zero interface identifier. It would therefore be feasible to scan the routers. Every single ISP would take as long as scanning the entire IPv4 internet. But that means they could do it in 45 minutes apparently (longer for bigger ISPs with more /32s). Of course the routers should be configured to ignore anything from outside, but so should the IPv4 routers.
But actually hitting peoples computers, printers and so on, even assuming no firewalls, is simply not possible. It is not even the bandwidth of the attacker that limits you, but the bandwidth of the target user. How long would it take to transfer 2^64 packets down the average users crappy DSL?
On top of that you get privacy extension. This is a system where your computer changes address at random at regular intervals (at least once a day). If you did spend millions of years to do a scan, you would very likely never find a working address because the targets are moving.