Коллизия это превышение предельной длины паузы между пакетами.
Пауза возникает либо по достижению конца "цепочки", либо когда у
приемника не сошлось CRC пакета (и он не передает тогда, когда его
очередь). Оба случая обрабатываются одинаково. Все ждут паузу случайной длинны. Но те, кто в этом цикле успел передать, паузу большую на константу, чтобы гарантированно дать возможность вклинится новичкам.
Если победителей оказалось два, у них не сойдется CRC и "тур голосования" будет повторен.
Если не жадничать на диапазонах задержки, такое не будет происходить слишком часто.
Было бы хорошо, если ваш UART умеет показывать приход первого байта пакета.
Тогда выявление победителя "тура голосования" было бы сильно проще.
Иначе нужен отдельный специальный однобайтовый пакет "я - победил".
И, наверное, шаг пауз кратный двум байтам, для гарантии.