Design is foolproof and simple. Prepared in case of eoip fail. When fails - both locations work independently without obstacles. ISP provider on one site is of poor quality.
No. It's not.
Routing IP solves your problem, but without the headache you're experiencing from breaking conventions.
You're experiencing a problem that shouldn't happen in the first place and looking for a solution to it. You're having to keep two sub-ranges of the LAN as separate pools in separate servers, and server 1 must give a different default GW IP address (and maybe even different dns server) etc - if hosts on the wrong side get the wrong info, then things are sub-optimal at best, broken at worst.....
If a zoo keeper came to you and said he was having problems with alligators eating his lemurs, you would say "don't put the lemurs and alligators in the same enclosure"
If you're routing between the two networks and EoIP fails, then both networks just stop being able to reach each other, but they're independent of each other for local and internet functionality. Each network is its own self-contained entity and doesn't need to balance carefully with a different location sharing the same network.
Here's how to use routing:
on R1, set 192.168.1.1/24 as the LAN, DHCP, etc. and set 192.168.255.1/24 as the IP address on EoIP interface.
(no bridging)
configure a static route: 192.168.2.0/24 gateway=192.168.255.2
On R2, set 192.168.2.1/24 as the LAN, DHCP, etc. and set 192.168.255.2/24 as the IP address on EoIP interface.
(no bridging)
configure a static route 192.168.1.0/24 gateway=192.168.255.1
Make sure that in each router, your masquerade rule does not match for traffic going across the EoIP tunnel.
Hosts at each network will be able to communicate with each other directly by internal IP address. If you want host names to work, use the DNS proxy on the Mikrotik as a simple fix - if your computers are using .local as the domain suffix, make entries in static DNS entries such as host1.local = 192.168.1.24 and host2.local = 192.168.2.99