The best approach would be to hook into the callback for starting the keyboard-navigation in UnityScreen (unityshell.cpp) check if the launcher is hidden and needs to be shown... and upon exit of the keyboard-navigation (look there for the UBus-callback to LAUNCHER_END_KEY_NAV) make it hide again, if it was hidden before (the start of the keyboard-navigation).
The best approach would be to hook into the callback for starting the keyboard-navigation in UnityScreen (unityshell.cpp) check if the launcher is hidden and needs to be shown... and upon exit of the keyboard-navigation (look there for the UBus-callback to LAUNCHER_ END_KEY_ NAV) make it hide again, if it was hidden before (the start of the keyboard- navigation) .