Use thread-local backtrace tables

We never 'throw' an exception from one thread to another, so we can have one table per thread. This should also avoid contention over free slots in the weak array.