No, there is no way to do it other than with loops. To list all subfolders in a dir, you use $finddir (look it up in the help file). It is important to start deleting folders from the bottom, ie from the 'deepest' folder in the tree, working your way up. A simple way to do this is to sort the list of folders. This way, for example, the folder
C:\program files\mirc\blah
will always come after
C:\program files\mirc
in a folder list sorted alphabetically. So, basically, sorting the folder list makes sure that the deepest folders are going to be at the bottom of the list. The following alias does exactly that: $finddir() loads the list of folders in the sorted (/window -s) window @@. Then we loop backwards, starting from the bottom line of that window and executing /rmdir on each line. As you already know, /rmdir can only delete empty folders; if the folder isn't empty, /rmdir reports an error and the script halts. Using the error handling system in mirc, we can prevent that: when an error is encountered (that is, when a folder cannot be deleted because it's not empty), we silence it and just let the script move on to the next folder.
Code:
alias delempty2 {
  if !$isdir($1-) { return }
  close -@ @@
  window -hls @@
  var %i = $finddir($1-,*,0,@@).shortfn
  while %i {
    rmdir-alias $line(@@,%i)
    dec %i
  }
  close -@ @@
}
alias rmdir-alias {
  .rmdir $1-
  return
  :error
  reseterror
}

The syntax is
/delempty2 <path to folder>


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