I think the problem of identifying senders should be solved by the bitcoin protocol. Suppose that Messages were supported when sending to a bitcoin address.
Suppose that the merchant generated a unique identifier and included it in the bitcoin link along with the address and payment size. The buyer clicks the link, which opens the bitcoin client and automatically opens the Send Coins dialog. The Pay To and Amount boxes are pre-populated with the information included with the link. The Message box is pre-populated with the unique identifier. All the buyer has to do is click Send. When the merchant receives the payment, the identifier tells him which buyer's account should be credited.
Now that I think about it you can do without the identifier if you generate a new address for each buyer. The trouble with that is that bitcoin addresses have to be stored forever by the merchant even after they are likely never to be used again, even if they've never been used, if there is any chance at all that they might be used in the future. The identifiers described above OTOH can be discarded after any time period the merchant chooses. Maybe that's less of a problem than I imagine it is.