IMHO, отношение лучше делать на весь перекрёсток
Типа такого:

Свойства:
type=crossing
crossing=controlled/uncontrolled

Роли:

main_road - главная
minor_road - второстепенная
outline - границы перекрёстка

Точки give_way/stop остаются как есть.

Для расчёта времени прохождения перекрёстка потребуется анализ попадания пересечения внутрь границ перекрёстка + определение взаимного расположения примыкающих дорог (слева/справа) для подсчёта направлений движений, которым требуется уступать. Чем больше направлений - тем выше время прохождения. Вместо границы перекрёстка можно перечислять все пересечения в отношении, но это более неустойчивая к ошибкам схема получится.