I think it's only doing the one script because as soon as the current script (with the rehash alias) is reloaded, it starts over from square one.

Try this
Code:
alias rehash {
  var %a = $script(0)
  while $script(%a) && ($script(%a) != $script) {
    .reload -rs $script(%a)
    dec %a
  }
}