It seems the public/blinding key operates on a per-wallet basis. Doesn't that basically kill privacy?
No, because it doesn't show up on the network; though sure it's not ideal-- it was just an implementation expedient: that has no impact on the consensus behavior, and it can be fixed to have one blinding key per scriptpubkey.
Is the exponent also encrypted? And if so, could you give some more detail on how you deal with amounts with different exponents?
No-- it could be, but the overhead of that is quite considerable. The exponent is public (note how it's shown on the getrawtransaction view), and just a property of the range proof, not the value itself-- so there is no complication in combining. It's set to whatever value the user wants, using it doesn't restrict the values you can send, though if your exponent is >0 your least significant digits are non-private.