If you already had a plan and didn’t intend to deviate from it, why did you ask for advice? Did you want us to guess your preconceived plan and then validate it uncritically?
add a firewall rule to drop all traffic to ISP router IP range other than the router itself
You asked for the “most performant” method, and then instead of accepting that advice, you went and found the least performant method and did it that way instead. The initial option I gave you took this restriction into account. Switch chip VLAN filtering offloads all decisions to the hardware IC doing the switching, while yours forces all traffic through the CPU so it can be seen by the Linux IP firewall. If you haven’t bottle-necked yourself to less than a gigabit already, continuing down this path will, sooner or later.
There are RouterOS based devices with switch chip rule tables which let it do firewall-like things in hardware, but the hEX isn’t one of these. Note the “no” in the rule table size column for the MT7621 switch chip — the one used in the hEX router — at the top of that page.
Note also that firewalling by IP is only as secure as the source of those IPs. You haven’t shown your configuration, but I would guess that all one has to do to get around your current scheme is assign a different IP to this segregated device. Given its segregated position, you might not even have to play ARP games to avoid potential IP conflicts.
My solution — port-based VLANs — does not have this problem.
allow device from the router subnet to manage the mikrotik
The performant way is to tell the enabled management services to listen for connections from allowed IPs:
/ip/service/set ssh address=192.168.1.0/26
The odd subnet mask restricts this to 192.168.1.1 - 192.168.1.63 under the assumption that low-IP’d devices are the management PCs and other “server” type systems on the secure side of the network, with static IPs, and that all the insecure devices use DHCP-assigned addresses from the upper end of the subnet range. But as above, this is secure only insofar as the segregated device is restricted from glomming onto .42 or whatever.
Alas, there is no negating this rule; you can’t say “!192.16.1.99/32” to make it ignore that one IP.
An alternative method that is more consistent with your current design and has the side benefit of avoiding the problem of IP-based security is to put that interface into an interface list and then add a firewall rule that matches on that list. The downside is that you still have the performance problem, because it adds an all-but-unskippable firewall rule since it has to filter out all attempts to contact the restricted services. The prior option puts less of a load on the CPU because it affects only incoming connections to the service(s) in question.