Четкий алгоритм обработки каждой конкретной команды реализуется основной программой. А функция приема пакета Wake универсальна и ничего не знает о реализации команд, она оперирует с размером пакета N, поэтому передача N обязательна. Попробуйте реализовать Ваше предложение в коде и всё станет ясно.
Насчет двухбайтовой CRC вопрос неоднозначен. У меня чаще всего длина пакета 1 - 4 байт, делать CRC32 для таких пакетов избыточно.
Бит паритета в принципе можно использовать на физическом уровне, на сам протокол это никак не скажется.
"В целом я резюмирую так: если мне не нужна поддержка и сопровождение устройств с протоколом WAKE, то закладывать его в новые проекты нет смысла." - поясните, пожалуйста. Я вот во все новые проекты закладываю протокол Wake и не чувствую ущербности.