UCI not saving changes, and dhcrelay behaving oddly

I have a BT Homehub 5A running 19.07, the device is running as a router and an access point. Map as follows:

                                   +-----------+
                              +----+   MAINPC  |
                              |    +-----------+
                              |
               +-----------+  |    +-----------+
Internet +-----+3  Sophos 1+--+    |           |
               |4   UTM   2+-------+ Master AP |
               |  Firewall |       |           |
               +-----------+       +-----------+
                                        /
                                        - 
                                        /  <-- radio0 wlan0 client 192.168.1.248
               +------------+      +-----------+
192.168.3.102  |    PC|1    +----->+1          | 
               +------------+      |2 homehub  | <-- 192.168.3.0/24 on switch0
                                   |3 openwrt  |
                                   |4          |
                                   +-----------+
                                        / <-- radio1 wlan1 SSID2 172.16.100.100/24
                                        -   
                                        /

As this is routing and not bridging, I need to service DHCP requests from the attached clients. I have installed isc-dhcp-relay-ipv4 via LUCI, and it fails to start. After troubleshooting, is seems to be because the service is not set to start (duh). If I make the appropriate changes with uci, they are saved in the state file, but not saved in /etc/config/dhcrelay4 after a commit or a reboot (the state file is still there after commit using -P, and the command does not give any error). Once I overcame that with a manual edit to the config file, it became apparent that when the dhcrelay process spawns during the boot cycle, it starts correctly, but doesn't work. The OFFER arrives, but is not forwarded on to the client network. if I stop it and start the service, it works. The command line executed by the service startup is

 /usr/sbin/dhcrelay -4 -q -D -pf /var/run/dhcrelay4.pid 192.168.1.100

and it is the same both times (I added the -D in the script). I thought a stop/start workaround via rc.local would work, but it doesn't. LUCI does save the changes to rc.local.

I am expecting 'uci -P /var/state commit' to write my changes the /etc/config/dhcrelay file, but it doesn't, and the only way I can make a change in that file is to edit it manually. Is my expectation appropriate, or am I misunderstanding it? I have a state file for the network too, whose changes are not reflected in the network config file, and are not wanted.

The other question I have is why would dhcrelay not work after a reboot, but work fine with a stop and start, either from the web interface or the shell, immediately afterwards. most odd.

Hope someone can help.

TIA