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
alias rehash {
var %a = $script(0)
while $script(%a) && ($script(%a) != $script) {
.reload -rs $script(%a)
dec %a
}
}