Что скажете на счет такого? (может уже было где-то, но я не находил)
Screen - объект экрана, сам является ключом и в себе содержит необходимые аргументы для запуска активити/фрагмента (тут же можно указать ключи для Bundle).
ScreenRouter - немного переделанный роутер под Screen.
И в CustomNavigator уже работаем только с объектом Screen, вместо key/data.
https://gist.github.com/RadiationX/217ffa4e62f5b20fdae3633865457689В нескольких проектах уже подобное использую, получается гораздо удобнее, чем просто с key/data.