I really wish I could cite a source here, but I cannot remember the sci-fi book I was reading that featured this as a core feature of their banking system. I will try to describe it though;
The premise is that you can create buckets linked to an account into which you can manually (or automatically up to a prearranged limit) siphon funds from the main account. Basically, what is described here Virtual 'Savings' Accounts
The extension to this is the concept of using these buckets for one time payments, generate a key which can be emailed/texted or transferred by NFC or any other method you like. The recipient of that key can then use it to check what funds are in the bucket and receive them.
Combined savings and instant payment mechanism. No chance of being overcharged, and a nice neat record showing how long it took you to save for what you wanted.
As you say, it sounds like the first piece of your use case could be managed using virtual accounts / savings pots.
This is slightly less radical but how about using a card for this instead?
We know that Monzo has over a billion virtual cards to play with, once the current accounts / debit cards launch. So we might be able to go to a virtual pot & generate a virtual card in the app (or maybe even Apple Pay), to use to make our payments from that pot.
It is possible to restrict virtual cards so that they can only be used to make a purchase for under a certain amount (& also, set the expiry date, restrict the MCC code etc.) - the company that I work for does this for business payments - so you would still have the protection that you’re looking for…
Monzo might come up with a completely different solution, of course but I just wanted to point out that your idea’s not quite as sci-fi & out of reach as you might have thought