For one thing, a game like this won't be used all the time, like poseballs at a beach. So, you can get away with less than ideal practices and not be the scourge of SL. Nonetheless, let's see the best we can do.
First, I'd use two states, one for "it" and one for "not it". Only the "not it" state would need a touch handler. The trick here is to figure out who starts out as "it". More on that below.
Second, the object can change its name to owner's name, perhaps with a suffix, e.g., "Lear Cale's tag". Then, when it chats, it doesn't have to say who got touched -- that will be clear from who does the chat. I'd use something simple and clearly visible, like "JANE DOE is IT! *****". Which would look like this:
Lear Cale's tag: JANE DOE is IT! *****
or simply:
Lear Cale: JANE DOE is IT! *****
if you don't use a suffix and just se the object's name to the owner's name. In either case, the text will be a different color, so folks will know it came from an object and not the avatar.
Third, I'd have the object chat two messages, one on channel 0 for avatars to see, and the other for the tag scripts to listen to, on a separate channel, and saying only the name of the avatar who is now "it". This way, only the tag objects hear these messages. More importantly, the tag objects hear ONLY these messages. Script lag from chat happens when too many scripts get run at the same time, due to lots of objects processing each line of chat. Let's avoid having the tag object process the avatars chatting normally and let them focus on messages from chat objects. These will be quite rare -- they only happen when a new person becomes "it".
OK, how to start the game? I suggest simply chatting on the "tag" channel the person's name:
/123 Lear Cale
Every tag object will process this, but only mine will recognize my name, and it'll go into the "it" state. The others will stay in the "not it" state, and save "Lear Cale" as the "it" person so they know when they get tagged by me.
On rez handler for "it" state should go to "not it" state, and "default" state should just go to "not it" state. (Or it could BE the "not it" state, but I find that it's best to leave default state pretty much empty, for use for special features relating to resetting, reconfiguration, or script upgrade.)
Are you going to change the object's appearance for the one who's "it"? I think I would make the object be a cylinder a bit larger than a torso, nearly invisible, and worn on spine or something, so folks can just click on the av's torso. And I think I'd color it a bit for someone who's "it". Perhaps bluish tint for "not it", and yellow for "it". (Most color blind people have a hard time distinguishing red and green, but not yellow and blue.)
Finally, a note about lag. Scripts don't cause physics lag, where things respond slowly to movement. They don't cause display lag, where the display frame rate goes down. (Physics lag can look similar, because both cause jerky movement, but once you've seen display lag it's pretty obvious that it's your display with a low frame rate -- things keep moving you just miss seeing it.) Scripts cause other scripts to run more slowly, so for example, it takes a poseball a long time to seat you after you click "sit". Scripts *might* cause chat lag, but I've yet to test this. I'm just mentioning this because I see lots of people talk about lag with no understanding of the causes and effects, and many tend to blame everything on scripts and neglect to notice the impacts of their 500-prim flexi hair.

If you avoid an "open listen", your script will be the least worry for lag when getting 20 to 40 avs together for a game. Even with an open listen it probably won't be a major problem, and even then only when playing tag. We worry more about objects that are numerous and permanent, like poseballs. Still, best to avoid the open listen and learn good practice!
Let us know how it works out. Good idea for a starter project, and sounds like it would be fun, too.