You're right actually, I just forgot about the fact that in constructs like #$ident, only built-in identifiers are evaluated. This is easy to get around however: #$($q) does evaluate your /q alias and is still a valid channel name. By wrapping a built-in identifier around a custom one, the latter can be evaluated.

/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com