Thread data optimization

Much better performance and minimal memory thrashing via keeping a few reusable buffers and managing capacities instead of a constant create / delete cycle between threads