To me all above answers are unsatisfactory because they limit what combinations I can use as custom shortcuts or what actions I can target, or they require way too much work for something that should be simple.
My solution is to use AutoHotkey to "translate" my desired key combinations into the existing shortcuts that Outlook 2016 (or Excel 2016 or what have you) expects for those actions.
So for example whenever I have an e-mail selected and press [Ins] I want it to be marked as read, therefore I have the AutoHotkey script replace that with a [Ctrl-Enter]. Or whenever I press [Ctrl-f] I want to go to the search box (d'oh!) but Outlook expects a [Ctrl-e] for that so I have the script send it a [Ctrl-e]. The script looks like so:
#IfWinActive - Outlook$
The "#IfWinActive" ensures these particular key-press replacements only apply when the active window's title ends with the string " - Outlook" (the end is marked by the dollar sign, which works because I've enabled Regular Expression based string matching mode above). Then I disable the active window title detection with the empty #IfWinActive at the end.
Also, once the #IfWinActive is hit, I know exactly which window will receive the keys I'm sending, so I don't have to do anything special beyond a simple "Send <keys>" in response to each real key-press that is to be replaced.