The current portage behavior looks to be like: 1. if RDEPEND contains '!' blocker, package is queued for uninstall and file collisions are allowed, 2. if DEPEND contains '!' blocker, package is queued for uninstall (after the package in question is installed, alike with RDEPEND) but file collisions are not allowed. I don't think that 2. has any real use. In fact, mistakenly putting blocker in DEPEND and not in RDEPEND results in weird behavior and unexpected file collisions. While this allowed me to find out that something went wrong, I needed an hour to figure out what is the problem exactly. Could you make the error a little more transparent, please? Preferably in the form of repoman warning/error, or portage warning that clearly states that blocker has been placed in DEPEND unexpectedly.
repoman support has been removed per bug 835013. Please file a new bug (or, I suppose, reopen this one) if you feel this check is still applicable to pkgcheck and doesn't already exist.