Ok so I did yet another test. I deleted the data on Demon Hunter Supplicants in the CombatMonitor addon, and redid the test with different gear. Those mobs hit fast and miss a lot, so I often fought 4 at the same time. Again, no shield block used.
Stats vs Demon Hunter Supplicant (dual wield, lvl 70)
observed my stats obs% err. %
Swings 10498
Miss 3120 29.36% 29.72% -0.36%
Dodge 1360 13.01% 12.95% 0.06%
Parry 1714 15.93% 16.33% -0.40%
Block 2265 22.34% 21.58% 0.76%
Hit 2039 19.36% 19.42% 0.06%
Miss = 5%+19%(dw)+5.36%, Hit = 100%-Miss-Dodge-Parry-Block.
So there is still some error in the block section, but it's small, and the one-roll theory fits much better than a block-on-a-second-roll theory. I guess the results from my previous tests can be explained by variance, i.e. not enough data.
I've read some discussions about the one-roll theory, and it has been said that Blizzard did it because it's less CPU intense. This might be true to some extent, although I don't think a multi-roll combat system would be that much more expensive. One argument I have not yet read in favor of the one-roll theory is that it makes the numbers much easier to understand. As in: 1% is 1%. Let's consider a multi-roll system, for example 1st roll for miss, if not miss then 2nd roll for dodge, if not dodge then 3rd roll for parry, and so on. With the above stats, what would be my total dodge rate? (100%-29.36%)*13.01% = 9.19%. So 1% dodge rate would be 0.71% total dodge, depending on miss. What would be my total parry rate? (100%-29.36%)*(100%-13.01%)*15.93% = 9.79%, or 1% parry is 0.58% total parry rate, depending on miss and dodge. In a multi-roll system like that it'd be pretty damn hard to compare items, because stats would influence each other: miss influences your total dodge rate, parry rate, etc., dodge influences the total parry rate, block rate. Making a game that is hard to understand is probably not what Blizzard wanted to do with WoW.
Getting crushed with SB up: I found several occurrences, but all could somehow be explained by lag, fear, stun, or being Little Red Riding Hood. And I still have less than 25% block rate (19-20%). It might just be impossible to get crushed with SB up and more than 25% avoidance.