There need be no way to specify the particular thread-space, as it should be visible only to the owning thread. The Thread module should add a global keyword or function that explicitly accesses a variable in the program-global stash. It should undeniably mark the data that is being shared. The Thread module should, on inclusion, also set the optree flag that triggers mutex locking on variables within the perl core itself. This is to guarantee that the above constructs will actually work - user created race conditions aside.
Threads are a runtime construct only.
Lexical scoping and compile issues are independent of any thread boundaries. The initial interpretation is done by a single thread. A cart and horse problem. As this occurs during the compile, there is only one thread in existence to receive the module. Subsequent threads should then reslurp these modules back in on their start up.