Вопрос решился следующим образом:
Вместо GetSharedBitmap получил битмап с помощью Detach, который в MSDN описан, как "Retrieves the bitmap contained in an ISharedBitmap object, and returns a copy if the contained bitmap resides in shared memory. After calling this method the bitmap is no longer associated with this ISharedBitmap" Получившийся "отсоединенный" битмап работает ожидаемо, после использования его освобождаю через DeleteObject.
Как правильно пользоваться "shared" битмапом так и не понял.