Yeah, its not the nicest change of all time, but I recently implemented it for a customer and with a bit of magic and a dictionary of the form {"GB":20.0,"DE":19.0, ...} and everything was fine.
What are the exceptions for Azores etc? I didn't implement them, better check what the implications are.
I see the problem probably as an easier thing because I was able to roll it out bit by bit and only switch the tax codes over on Jan 1st. If one were to start from scratch now, that would be more annoying.
Those two libraries contain the logic to determine if a user is in one of those special areas by feeding in various information they have provided.