Technically, you can never get all the addresses given that many addresses are not known on the network (think paper wallets). Until an address has done a transaction on the network or a key is published online it is not possible to know the balance of that address.
For example, no one knows Satoshi's addresses, but they are rumored to contain upwards of 1,000,000 Bitcoins.
I am not sure if this is correct.
If Satoshi's address has bitcoins, they have to come from somewhere. In the case they had been accumulated during the mining process in the beginning of bitcoin, there exists a coinbase transaction which sends the bitcoins to these addresses.
When you create a paper wallet and there are no bitcoins, you are not able to the address to a user, because it never had an incoming or outgoing transaction.
It should be able to scrap all used addresses from the blockchain.
Unless I am forgetting something or I misunderstood a concept, but I think I don't
Feel free to correct me.