Excellent idea!
It also dawned on me as I was waking up this morning that the “real” current view comes with TEXT COMMANDS! I remember having seen it in BoxDrawing and I put something in that Package to avoid permitting box drawing in the various Panels and Overlays. I’ve been using an ApplicationCommand! And of course window.active_view() only gives views attached to Sheets! And sure enough, it works! and I THINK that is also going to solve 2 the “overlay_has_focus” tests. Check this out (from a quick test):
Console:
window.views()
produces:
>>> window.views()
[View(13), View(33), View(22), View(14), View(16), View(18), View(19), View(23)]
TestTextCommand:
print(self.view)
print(self.view.element())
Produces (when focus is on Console input View):
View(34) // <-- note this is not in the "active views" list.
console:input
Solved! 
I think ST2 only had EventListeners and ViewEventListener was invented for ST3.
That would account for what I saw!
About ordering, lucky for us that keymap_paths = sublime.find_resources('*.sublime-keymap') appears to be returning them in initialization-time LOAD ordering, which I have been purposely taking advantage of in ordering of data collected for each report! 
P.S.
While I was collecting those ViewEventLister objects, I also noted that they “already know the View they are listening for” in an attribute, and I’m updating that too so they have the current View (at the beginning of each report).
context.update_view_event_listeners(self.view)
P.P.S.
I also got an answer on what “panel_type” is—found it in Default (Windows).sublime-keymap!
I don’t know what OTHER values it might have, but it appears in 6 key bindings combined with the panel_has_focus test like this (shows possible values of “find” and “input”):
{ "keys": ["alt+c"], "command": "toggle_case_sensitive", "context":
[{"key": "panel_type", "operand": "find"}, {"key": "panel_has_focus"}],
},
{ "keys": ["enter"], "command": "select", "context":
[
{ "key": "panel_has_focus", "operator": "equal", "operand": true },
{ "key": "panel_type", "operand": "input"},
],
},
And testing is showing Sublime Text defines:
- “input” = (didn’t know how to test this one, but I am guessing any panel created by
window.create_io_panel())
- “find” = any input View on any of these Panels:
- Find
- Find-in-Files
- Replace
- Incremental Find
- “output” = output of a Build System, but not of the console (probably any output Panel), which means any panel created with
window.create_output_panel().
*grrrrrr I wish this stuff was documented…
*
A look into the list produced by window.panels() contains ONLY the above Find panels plus input and output panels, and the console, which seems to be an exception. I noted in the view.element() API documentation that it says the console output View is not accessible via the API. So the above kind of makes sense.
And testing with “exec” didn’t succeed, so it does not appear to be in the above list.
P.P.P.S.
…and just to document it: the possible values for “overlay_name” are (as proven in testing it with Sublime Text response to an actual key binding):
- “goto”, and
- “command_palette”
“goto_anything” does not work.