The communication necessary between a wallet and a node is really quite simple, if you strip it down to the bare minimum, and it is very possible to do it over JSON, or whatever.
At the bare minimum, only two calls are needed. The first one is a way for the wallet to provide an identifier (public key, address, or whatever) and have the server return all transactions related to that account. The second is a way for the wallet to push a transaction to the node so that the node can relay it to the network.
Note that this completely sidesteps the issue of interactive reception. The reason for that is that I consider it a matter between the node and the ecommerce software, not between the wallet and the node. The existence of blockexplorer.com should convince you that this problem is solvable.
On the original topic of addresses, I'm all in favor of having many means of transport. But, we should always think carefully when adding a new format.
For example, standard addresses contain redundancy so that we can detect errors when someone types them in, or does a copy and paste. The specification for QR codes also contains ECC, so it makes no sense to encode a standard address as a string in QR. We would be better off encoding only the address part, and leaving the check code out.
I also think that firstbits is a bit silly, because I've never typed an address, and I don't think I ever will. It also throws away the check information, which is funny because it was allegedly designed for typing addresses by hand. But, I suppose in a way, it has a different means of verifying typing errors in that not every string is necessarily valid. And as far as you know, no one has sent themselves a bunch of transactions that just happen to resolve to common misspellings of valid firstbits addresses.