Hello,
I think you problem is in how you are calling the RLV restriction.
RLV restrictions called though an llOwnerSay issue the commaned directly to your viewer (ie FireStorm, Phoenix etc)
Those type of command do not use or even require a relay.
If you want the relay to be used and for the safeword button to work try issuing the command threw a llSay on the relay channel instead of llOwnerSay.
examples:
llOwnerSay("@detach=n"); // not safewordable though your relay
llSay(-1812221819,"NoRemove,"+(string) llGetOwner()+",@detach=n"); // safewordable though your relay
I think the listener thing other where talking about would be if you wanted to build in a separate "safeword" that your script specifically listens and then would clear restrictions independent of your relay. ("@clear" for llOwnerSay restrictions, "!release" for llSay restriction)
Hope that's of some help.