I've checked the code again, and the stealth skill is used to define a "noise" value that is checked every time a monster is processed (in process_monster)... which means every game turn. This is correct in a turn-based system, as the player can act every game turn, but in real-time this becomes pointless (unless you can enter a key every second without ever stopping). This is why a stealthy hobbit rogue sees non-alert monsters wake up in a couple of seconds, because the check is also made when the player is idle.
The stealth system should probably be adapted so that only non-idle turns are taken into account.
Problem with stealth skill
Re: Problem with stealth skill
Filled as ticket #1194.