

Every country has different requirements. Cross country digital authentication is already possible thanks to EIDAS, so there’s no need to invent something that’ll suit the least common denominator for all countries like a centralised system would. You use your own government’s login method, and it should work across the entire EU as long as the institutions are following European law.
You don’t just switch payment providers, though. There’s a lot of auditing and security checks involved in doing anything related to payments, and now you’re coordinating different banks at the same time. Here, the entire country uses one single payment system, iDeal, and that took half a decade to get off the ground and much longer for stores to actually integrate everywhere.
The bank-run Dutch iDeal payment system seems to be moving to Wero next year, that’s going to be a pretty huge transition. If they can pull that off, that may generate the trust other banks may need to actually put in the effort to integrate that deeply into another payment solution.
Also, the availability of non-local payment options such as PayPal over whatever local payment systems there are is a positive in my book. I can’t pay online in most European countries without going through PayPal because most of them have their own national systems. Had two German stores and one Danish service not accepted PayPal, I would’ve been screwed last year.
The specification of the algorithm specifies up to 56 bytes, including a null terminator. If you’re using UCS-2 (2+ bytes per character, like Windows, Java, Javascript, and more languages and platforms do), that’s 27 characters (can’t use the last half byte character pair). Add some margins for extended characters (emoji and such) and you’ll end up just above or below 24. With UTF-8 you can end up doing much better (exclusively Latin-1) or much worse (exclusively non-Latin character sets). Verifying that on the frontend is a massive pain (string length in JS is unreliable) and dynamically switching codecs is a recipe for bugs and security leaks.
The 72 byte limit is the result of the internal workings of most bcrypt algorithms, but if you ever switch implementations you need to make sure that implementation doesn’t change the internal workings if you rely on details like that. If the stars align you can use 71 characters (72 if you use Pascal strings), but that’s far from a given.