Describe how you would attribute the "nth address" correctly in a distributed network and/or block fork.
I'm assuming your basis would be something along the lines of the "mth" output index in the "nth" transaction would contain the nth address. If only transaction ordering could be reasoned with
As a side note, is 2^48 number of transaction output indexes sufficient for all the addresses in time ever?
What about script hashes?
Basically you're suggesting that you can compress the public address into something smaller, which at best case "might" reduce any scripts that contain 20 bytes hashes of public keys (P2PK) into 4-6 bytes, saving at most 16 bytes. Not even enough to fit another transaction in beside it. So less than doubling the transaction count in a single block (best case).
You're better off doubling the block size capacity (to 2mb) and you already have a better solution.