Кароч. Мысля такая пришла. Делаешь второй вектор, для пакетов. Вектор по размеру исходного, с объектами. Дальше запускаешь std::transform с нужным execution policy. На каждый вызов - создаёшь некую информацию для пакета и возвращаешь её. Ну а потом, уже за пределами transform, обрабатываешь полученный вектор с пакетами.