自己レス。結局CoInitializeはスレッド毎に必用なのでありました。

…ということは、他のスレッドで取得したIMalloc, IShellFolderなどを
別のスレッドから使用するのは危険な気がしてきた…。

今、おもいっきりそーゆー処理してます。一応動いてますけど…。