The inability to have the option to synchronously load chunks completely breaks destroys tons of datapacks. Async loading would ordinarily be a good idea, but programming languages with async functionality usually have a callback function so you don't have to continuously poll to see if the task completed. What this change does is guarantee the majority of datapack makers' time will be spent ensuring their datapack doesn't run into race conditions every single time they want to interact with the world in any meaningful way. The /forceload command isn't even accurate anymore. It should be called /pleaseloadifyoufeellikeitsometimemaybe.
Still affects 1.16.5
This is still in 1.16.3
Going between (custom) dimensions hides the xp amount until xp changes or the player relogs.
Mending affects one item at random and only items in your main hand, off hand, or armor slots. So what might have happened is that you were not holding the item when you collected xp. And if you were, it might have gone to your armor or shield instead.
Confirmed for 1.17.1