Variables are ok, they just need to have correct values. In this case the address, which you use for gateway, needs to have mask stripped from it. This works for me
as system script:
:local addr [/ip address get [find where interface=test1 disabled=no] value-name=address]
:set addr [:pick $addr 0 [:find $addr "/"]]
:local lan [/ip dhcp-server network get value-name=address number=0]
/system ssh-exec address=192.168.80.181 user=testadmin "/ip route add dst-address=$lan gateway=$addr"
Getting it to work as script executed by VPN client is another challenge, because if I remember correctly, it runs under some system account and you can't add ssh key for it. Maybe it can work if you wrap it in system script, where owner user has a key, I'm not sure.
In any case, the whole thing looks incredibly insecure, because you'll have to give clients admin access to server. It also won't work well, if you don't have all clients and their routers under your control, because half of them will have some same popular LAN subnet like 192.168.0.0/24.