TBH - You are really going to need to use c++ or at least c#, maybe Java? to get something similar to Radiant AI working.
I've often toyed with the idea of running AI scripts or Pseudo-AI Scripts on other secondary threads to the nwserver process itself.
In nwnx - if you wish to invoke a nwserver method, then yes, you do need to be on the main thread in order to preserve the call stack : Eg, variables and local vars can get contaminated if you try to call methods from another thread.
However, if you have a reference to an object, you 'might' be able to read from its members.
Eg: Ability Scores, perception list etc
Without having to be on MainThread:
Even if you do need to be on the MainThread, there are ways of implementing a critical section, allowing two threads to communicate with eachother.
I do this in my Server:
I hooked MainLoop, and when the secondary thread has an instruction for the MainLoop to run, it adds it to a collection for the MainLoop to process at its own convenience.
This being the case, you could in theory have as much passive processing as you want, running on a second thread.
The only bottleneck is when you try to give instructions to nwmain.
Theoretically, computations and AI scripts could be leveraged to be 60-70% passive on the secondary thread, with only 30-40% of it needing access to MainLoop when it tries to give instruction to its creatures.
In any case:
One of the major features of Radiant AI was the ability for NPC's to be carrying out tasks in other parts of the world, without the player being present.
Eg: A farmer will till his fields, or a lumberjack will cut down a tree.render
Skyrim never actually physically rendered these NPC's to go and do those tasks, they would only NPC's when players are near.
So - in terms of making this a possible system in NWN, you would have to consider despawning creatures - until players come within rendering range (the area?)
When the creature is going to be spawned, check the schedule, and check to see what they are meant to be doing at that time of day, order them to do that activity.
You could either:
Have a heartbeat that runs on each creature, allowing each creature to monitor its own lifetime / usefulness.
(If all players log out - the creature could despawn itself?)
or
You could have a single pseudo hb that kicks off during the modload event.
This HB would loop through all creatures that are part of the system, and determine what they should be doing, if players are near by that the creatures are still useful etc.
If the creature is deemed to be not useful, remove it or limbo it, until the player is potentially going to see the creature.
Essentially, the cleanup operation is around the principle of:
Is a creature in Whiterun, doing his laundry, going to be useful to a player in Riften - given that the player cannot see, hear, or interact with the creature.
If the idea is to 'simulate' that the creature is doing his laundry, then that's basically a computation : Creature does laundry, gets result, record result or give to player.
The creature does not actually have to do his laundry, the only thing that matters is that the player is led to believe that the creature had done his laundry.
Thats what I mean when I speak about doing some of these activities 'in the cloud' or just outside of NWN.
An extension application that could run these tasks outside of the nwserver process, would be ideal - kinda like a dedicated brain for doing the calculations and management of all the things that players cannot see.