The only way to start a thread within an execution is with a sequence call step.
To accomplish what you describe, your sequence could start a thread that waits for requests to start new threads (requests sent via any convenient mechanism such as TestStand events or queues, Windows synchronization primitives, TestStand or DLL variables, etc.). When the thread receives a request, it would use a sequence call step to launch the appropriate new thread.