Once you start thinking about it, you'll realize that this means we need two layers of secret identities. So a player's character looks something like this:
Possibly. Another way to do it would just be to describe things without revealing any identities at all- for instance, perhaps the wandering off parts are during regular power outages, or attackers are careful not to be seen and evidence is discovered after the fact. So if
Doctor Scarlet attacks
Professor Pink, instead of saying "Professor Scarlet attacks Professor Pink" you just mention that Professor Pink is assaulted in the dark- but by who?
Even more deviously, reporting or discovering things could be up to the players themselves- meaning you'll have to take Professor Pink's word for it that he was attacked, and someone will have to wander into the kitchen to find out that's where Intern Purple has been, er, "hiding."
Of course, this does lack a certain dramatic appeal and sense of narrative, so the layered identities thing might be better anyway. I would point out that knowing
exactly what Professor Scarlet has done is possibly not ideal, since that leaves it ironclad as to what they were and weren't doing if you do figure out their identity. But then, I guess that's a staple of murder mysteries anyway.
But there's still a problem: how do the players directly attack each other? Inspector Jade can't say "Attack Doctor Scarlet", because he doesn't know which character Doctor Scarlet is. And he can't say "Attack Lord Frampton" because then the GM has to write the turn as "Inspector Jade attacks Doctor Scarlet", and his identity is given away to the other player AAAGGGGHHHH
To some extent you could just attack people based on conditions instead; ie "I kill whoever's in the library" or "I attack whoever's making the most noise." This is basically a combination of the issue you pointed out (or at least, the issue I pointed out with the solution to the issue you pointed out) and the issue I pointed out; namely, that all or no information regarding player activities doesn't really work very well.
One possible method could be to add an element of chance to any actions being correctly revealed, with others being either blank or false. So for instance, let's say
Doctor Blood attacks
Botanist Bud.Normally, you'd have to just say it like that, meaning Bud knows Blood is after him, or at least crossed him before. Strictly speaking, if players can't identify each other during the night anyway, this shouldn't matter so much; Bud can discern that Blood sneaks around the library a lot because he keeps attacking people in there, but he can't know for certain that whoever he's attempting to bludgeon in or around the library is absolutely Blood.
But what we could also do is have a roll for correctly identifying the assailant, meaning Bud
might correctly identify Blood, or he might think it's
Farmer Fudd instead, or possibly just not quite catch his assailant. This roll could even be separate for the player and the "audience," so Bud might
think it's Blood, but everyone else seems to think it's Fudd, so not only can he not reveal what he knows without outing himself, he's not sure who's correct.
So, short answer: Location/action based targeting. Long answer: Roll to identify assailant.