Roleblocks are best resolved based on dependency imo.
On the one shot topic,
If a one-shot gets roleblocked, his power is gone, as I've always known it. You create a terrible problem with the one shot Doc if you don't do it that way: if he tries to protect someone but is roleblocked, he shouldn't be informed. But if that player isn't targetted for a kill, he has no idea he was roleblocked. If you let him keep his shot, he has another Doc shot but has no idea he does. He could send in protection PMs every night just in case, but that's a pain, it's a potentially unnecessary decision with lots of gravity if it's real.
Furthermore, allowing a one-shot to keep his shot even though he was roleblocked subverts the concept of the roleblocker. The idea is that if a mafia roleblocker PR hunts well enough to block a cop, he will investigate 2 times all game instead of 3 and do some damage that way. If he roleblocks a one shot cop, he should investigate 0 times instead of 1 time all game. Delaying an investigation or delaying a protection is a very negligible amount of damage, so you have a roleblocker that randomly fails when he hits the "wrong" PR, which is dumb.
If you want the roleblocker to interact that way it seems like you don't want a roleblocker at all.