What I want to do is to do a set of instructions in parallel as opposed to in sequence but it appears the only way I can do that is to try doing something by messing with RegisterForUpdate()/OnUpdate() in a dirty manner. However, this approach is likely going to be error-prone since you can't actually differentiate the different OnUpdate() events, which may cause some of them to try to do the same thing (i.e. if I have 5 spells to cast, 2 threads may decide to cast the same spell instead of 1 thread per spell).
So.. any advice?

It's the manual part I was finding silly. If you (mymonster[myindex] as mymonsterscript).Dostuff() then there's no apearance of threading issues, each monster is neatly given it's own thread