По той причине, что функция nextval возвращает новое значение говорит о том что она хранит состояние (она не pure). Но это значение не часть данных это просто вспомогательный механизм. Все перечисленные тобою плюсы последовательности решаются и с помощью вспомогательной таблички с единственным autoincrement полем. Несколько табличек - несколько последовательностей. И это тоже атомарно, с такимже спинлоком на низком уровне.