Perhaps the real solution is to default to "busy" and only show "available" on a trigger, like web-browsing or staring into space.
It looks like to me that due to previous solutions, people try to improve upon in the same domain. May be the premise of the solution is wrong.
However, one does not always plan in advance to get into deep focus, so I don't really believe this problem is solveable in a useful way. Basically, we need to learn to regain focus quickly and push people away when busy.
Also, async interrupt methods are great when used properly: don't you hate it when someone pings you with "hi" or "hi, I have a question" or similar and waits for your response? Good practice is to ask a full question which allows the other side to respond when they can without interrupting.