After ~1 day of digging I found a way to do that:
set error_=0
9>&1 1>&2 2>&9 (for /f "delims=" %%i in ('9^>^&1 1^>^&2 2^>^&9 ^(^(^(2^>^&1 call "%homeDir%%1"^) ^|^| ^(1^>^&2 2^>nul echo FAILED^)^) ^| 2^>nul "%homeDir%mtee" /T /+ "%homeDir%logs\%date_%_%1.log"^)') do (set error_=1))
exit /b %error_%
In the example above "%homeDir%%1" is being executed and it's output is piped to "%homeDir%mtee". This line detects failures (I'd suggest you to draw a diagram of batch contexts and their stdin/stdout/stderr assignments in order to understand what it does :-) ). I did not find a good way to extract actual errorlevel -- best thing I've got was to replace 'echo' command with some batch script call 'call rc.bat' which look like:
@echo %errorlevel%
and then replace 'set error_=1' with 'set error_=%%i'.
But the problem is that this call may fail too and it is not easy to detect that. Still it is much better than nothing -- I did not find any solution for that in i-net.