Я однажды использовал подход с вороными полигонами. Я сделал это вручную, и у меня есть только смутное представление о том, как вы могли бы сделать это с красивой, но вот как это происходит.
Сначала вы извлекаете вершины каждого перекрывающегося многоугольника и создаете из них многоугольники Вороного (вектор> инструменты геометрии> извлекать узлы и вектор> инструменты геометрии> vononoi). Получив форму, вы можете нарисовать линию, которая разделяет область перекрытия ровно на две части. (Ярко-зеленая линия)

Вы обрезаете слой вороной перекрывающимся многоугольником, удаляете перекрытие из исходных фигур и вставляете обрезанный многоугольник вороной обратно в исходные фигуры. Выберите, объедините, вуаля!
Теперь это выглядит немного грубо, потому что у меня действительно простые формы. Но если вы уплотните его (Вектор> Инструменты геометрии> Геометрия плотности) и добавите примерно 20 узлов между каждой существующей вершиной, вы можете получить это:

Который намного лучше. Легко, если у вас есть только небольшое количество форм для изменения.