Actually, in looking over the functions again, it turns out that there is already a function that does what you want: random-elt. That should do what you need it to do.
As for your problem (and no, it doesn't work on Anarki[1]), the problem is that rand-choice is a macro, not a function, and apply only works on functions. The only solution is a terrible hack:
(def mapply (macro . parms)
" Applies the macro `macro' to `parms', which are not quoted.
See also [[mac]] [[apply]] "
(eval:apply (rep macro) (join (butlast parms) (last parms))))