I have found a bug, probably as old as $$ itself, where event-specific identifiers are not being seen if they are $$ prefixed. Is this the issue you are referring to? If I remember correctly, the $$ prefix was originally added for use in aliases and popup menus, so it has never worked in remote events. But it should be possible to extend it to do so, unless anyone can see any side-effects that could affect existing scripts.
As for $chan: unlike most identifiers, it has special-case handling in several places that depends on context. That is because it was designed to be valid in both events and non-events. Outside of events, it represents the active channel window. Inside events, it represents the channel name for a channel-related server message (ctcp, action, join, etc). If it is any other event, it returns an empty string. It really should have been given a different name inside events. This is made more complicated because of the discussions we have had in the past about the value of $active inside events, where it defaults to the status window for most events. As discussed before, changing this would break scripts. And without changing this, there is no way to set $chan correctly.
On the other hand, on INPUT is one identifer where setting $chan would be possible because it is one of the special cases when it comes to setting $active in the event. So if this issue is about $chan inside on INPUT, it could be fixed, but I am not sure it should be because $chan inside events was not intended for that.