This is a great writeup! Thank you for sharing.
The comparison makes total sense, and I think we should do *more* of this. The biggest reason you'll see a difference around Blocking time is due to how BMP "fakes" it. Technically, it's not possible for BMP to really know what the blocking time is, since Blocking is really an in-browser measurement that is supposed to tell you how much time the browser waited to begin an HTTP request but couldn't because it was blocked by the rules around # of concurrent HTTP requests.
BMP has no insight in to what is happening in the browser, so instead a way to work around it is to configure the browser to have a very large limit of concurrent requests to the proxy (way higher than a regular user), effectively causing no blocking to happen in the browser. Instead, you can then have the *proxy* enforce rules about # of connections per host and therefore attempt to record a close approximation of Blocking time.
So there may be a few things going on here:
1) BMP is currently set to allow SIX connections per host, but that might be worth revisiting. Can you check what Firefox 11 allows?
2) There is no API to modify #1, and there should be since each browser has it's own rules and so we should try to emulate it. It might even be good to try to automatically emulate it based on the User-Agent.
3) Your browser must be configured to allow a bunch of concurrent requests to the proxy. By default Firefox only allows 8 but can be configured to allow more by tweaking network.http.max-persistent-connections-per-proxy. Other browsers may operate differently.
I hope that helps - we definitely need to do more research here and there may very well be bugs in the code too! Please let me know how you continue investigating this.
Patrick