FHEM sleep blockiert nicht. 
Aber nur, wenn auf das Sleep, so wie von dir dargestellt direkt ein weiteres Kommando folgt. Alleinstehend würde es sehr wohl blockieren
Ich nutze das übrigens in meinen MyUtils auch so, wenn ich eine Verzögerung o.ä. brauche, da ich zu bequem bin, das über das zugrundeliegende Timerhandling selbst zu machen.
Es müsste sogar so etwas funktionieren:
fhem("sleep 5;{ mySubSomewhere('blah') }");
also perl-Code als nachfolgender Befehl.
gb#