Maybe contact the developer(s) of BitID (or another OAuth type solution), and see if you can work together, and get something integrated? Then instead of including the full shipping address & customer details in the blockchain each time, you only need that public key / identifier. Keeps it under the 40 byte limit in 100% of the cases, plus helps on the security side of things, as full contact info isn't being added to the blockchain.
True. We've been working on a registry which accomplishes this feature. A simple unique identifier is sent with the transaction and registered merchants can 'look up' the postal address in a table available to authorized merchants for that purpose. Keeps the blockchain very clean and tidy - which of course is a primary concern.