After messing around with it for a few hours it suddenly started working. I changed nothing about the farm. Not sure what did the trick, but I'm closing the ticket.
Through testing I discovered that Villagers can now only detect doors within the same chunk they are in. So if a village isn't properly aligned, it will never spawn golems, no matter how many villagers you add.
First of all I can confirm that this still happens in 1.21.11.
I will try to explain this the best I can, just in case it helps with fixing it.
Why this happens:
My testing with skeletons shows that the way shields' 180 degree block radius (at least effectively) works is by marking front “half” of the hitbox as protected, by dividing the hitbox with a line that goes through it’s center and is perpendicular to the direction the player is looking.
This means that it doesn’t matter where the arrow is coming from, but only where it hits the hitbox.
Because the hitbox doesn’t rotate according to where the player is looking, and is instead in a static rotation. That means that if the player is positioned slightly diagonally from a skeleton (in comparison to the block grid, not aligned with cardinal or diagonal directions), if the player is looking directly at the skeleton, there is always a part of the hitbox which isn’t protected (The corner which is furthest away from the skeleton, which the skeleton can see).
Even if a skeleton is right in front of you, and you are looking at it while blocking, it can still hit you “from behind“ if it hits that part of the hitbox.
Though the change of this happening is much higher when fighting multiple skeletons at once.
This is also why another bug happens (in reality the same one), which is skeletons being able to hit you through a shield when they are multiple blocks below you or even as little as 1 block above you. (I’ve had both happen numerus times)
I could be wrong about the way the shield actually works, but this is how it works in practice.
How to most easily reproduce the bug:
Spawn two skeletons far apart from each other and have them both shoot at you.
Start from the same distance from both, but not right in the middle of them. While blocking and looking straight between them, keep moving forwards until you’re in the middle.
Most often, you will not make it to the middle without taking damage.
To better see where the arrows are hitting you, you can use F5 and maximum FOV while holding the camera straight above you.
You will see that every time you took damage, an arrow hit the back half of the hitbox.
I hope this helps.