Если ваши данные не меняются после создания, используйте неизменные структуры данных. Тип, который вы выберете, будет определять цель использования. Что-то более конкретное потребует знаний о вашей конкретной проблемной области.
Возможно, вы действительно ищете генератор подмножеств, перестановок или комбинаций, и тогда обсуждение структур данных будет спорным.
Кроме того, вы упомянули, что понимаете параллельные преимущества. Предположительно, вы используете какой-то алгоритм для перестановок и подмножеств, и есть хороший шанс, что алгоритм может быть в некоторой степени распараллелен. Если это так, то использование неизменяемых структур заранее гарантирует, что ваша первоначальная реализация алгоритма X будет легко преобразована в параллельный алгоритм X.