I'm pretty confident it's not concurrency in the script itself, I'm only using llTeleportAgentHome and then llAddToLandBanList, in that order. One would hope that executing in that order would first TP the agent home, then add them to the ban list (which I guess would push them to the edge of the sim and the TP would fail if I did it in the reverse order).
I don't think it's my management ejecting them manually, either, because the behavior is reproducible even when none of the officers in the community are present.