I have found a solution that works for me. Configure dhcp-client including the following:
There may well be other combinations that work. However, I only have my single broadband connection with which to experiment. As it is used by several services, including one path of a dual path monitored security system, I am reluctant to investigate further.
Here is the section of the (slightly edited) log from my first successful connection (with the MAC address obscured):
12:34:19 interface,info ether1 link down
12:34:19 dhcp,debug,state dhcp-client on ether1 entering <stopped> state
12:34:22 interface,info ether1 link up (speed 1G, full duplex)
12:34:22 dhcp,debug,state dhcp-client on ether1 entering <selecting...> state
12:34:23 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:23 dhcp,debug,packet flags = broadcast
12:34:23 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:23 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:23 dhcp,debug,packet Msg-Type = discover
12:34:23 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:23 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:23 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:24 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:24 dhcp,debug,packet secs = 2
12:34:24 dhcp,debug,packet flags = broadcast
12:34:24 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:24 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:24 dhcp,debug,packet Msg-Type = discover
12:34:24 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:24 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:24 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:26 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:26 dhcp,debug,packet secs = 4
12:34:26 dhcp,debug,packet flags = broadcast
12:34:26 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:26 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:26 dhcp,debug,packet Msg-Type = discover
12:34:26 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:26 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:26 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:29 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:29 dhcp,debug,packet secs = 7
12:34:29 dhcp,debug,packet flags = broadcast
12:34:29 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:29 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:29 dhcp,debug,packet Msg-Type = discover
12:34:29 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:29 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:29 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:31 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:31 dhcp,debug,packet secs = 9
12:34:31 dhcp,debug,packet flags = broadcast
12:34:31 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:31 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:31 dhcp,debug,packet Msg-Type = discover
12:34:31 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:31 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:31 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:36 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:36 dhcp,debug,packet secs = 14
12:34:36 dhcp,debug,packet flags = broadcast
12:34:36 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:36 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:36 dhcp,debug,packet Msg-Type = discover
12:34:36 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:36 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:36 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:41 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:41 dhcp,debug,packet secs = 19
12:34:41 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:41 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:41 dhcp,debug,packet Msg-Type = discover
12:34:41 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:41 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:41 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:44 dhcp,debug,packet dhcp-client on ether1 sending discover with id 2036451535 to 255.255.255.255
12:34:44 dhcp,debug,packet secs = 22
12:34:44 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:44 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:44 dhcp,debug,packet Msg-Type = discover
12:34:44 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:44 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:44 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:44 dhcp,debug,packet dhcp-client on ether1 received offer with id 2036451535 from 192.168.100.1
12:34:44 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:44 dhcp,debug,packet yiaddr = 192.168.100.20
12:34:44 dhcp,debug,packet siaddr = 192.168.100.1
12:34:44 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:44 dhcp,debug,packet Subnet-Mask = 255.255.255.0
12:34:44 dhcp,debug,packet Address-Time = 20
12:34:44 dhcp,debug,packet Msg-Type = offer
12:34:44 dhcp,debug,packet Server-Id = 192.168.100.1
12:34:44 dhcp,debug,state dhcp-client on ether1 entering <requesting...> state
12:34:44 dhcp,debug,packet dhcp-client on ether1 sending request with id 2036451535 to 255.255.255.255
12:34:44 dhcp,debug,packet secs = 22
12:34:44 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:44 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:44 dhcp,debug,packet Address-Request = 192.168.100.20
12:34:44 dhcp,debug,packet Msg-Type = request
12:34:44 dhcp,debug,packet Server-Id = 192.168.100.1
12:34:44 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:44 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:44 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:45 dhcp,debug,packet dhcp-client on ether1 received offer with id 2036451535 from 192.168.100.1
12:34:45 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:45 dhcp,debug,packet yiaddr = 192.168.100.20
12:34:45 dhcp,debug,packet siaddr = 192.168.100.1
12:34:45 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:45 dhcp,debug,packet Subnet-Mask = 255.255.255.0
12:34:45 dhcp,debug,packet Address-Time = 20
12:34:45 dhcp,debug,packet Msg-Type = offer
12:34:45 dhcp,debug,packet Server-Id = 192.168.100.1
12:34:45 dhcp,debug,packet dhcp-client on ether1 received ack with id 2036451535 from 192.168.100.1
12:34:45 dhcp,debug,packet ciaddr = 0.0.0.0
12:34:45 dhcp,debug,packet yiaddr = 192.168.100.20
12:34:45 dhcp,debug,packet siaddr = 192.168.100.1
12:34:45 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:45 dhcp,debug,packet Subnet-Mask = 255.255.255.0
12:34:45 dhcp,debug,packet Address-Time = 20
12:34:45 dhcp,debug,packet Msg-Type = ack
12:34:45 dhcp,debug,packet Server-Id = 192.168.100.1
12:34:45 dhcp,info dhcp-client on ether1 got IP address 192.168.100.20
12:34:45 dhcp,debug,state dhcp-client on ether1 entering <bound> state
12:34:55 dhcp,debug,state dhcp-client on ether1 entering <renewing...> state
12:34:55 dhcp,debug,packet dhcp-client on ether1 sending request with id 2036451535 to 192.168.100.1
12:34:55 dhcp,debug,packet ciaddr = 192.168.100.20
12:34:55 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:55 dhcp,debug,packet Msg-Type = request
12:34:55 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:34:55 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:34:55 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:34:55 dhcp,debug,packet dhcp-client on ether1 received ack with id 2036451535 from 192.168.100.1
12:34:55 dhcp,debug,packet ciaddr = 192.168.100.20
12:34:55 dhcp,debug,packet yiaddr = 192.168.100.20
12:34:55 dhcp,debug,packet siaddr = 192.168.100.1
12:34:55 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:34:55 dhcp,debug,packet Subnet-Mask = 255.255.255.0
12:34:55 dhcp,debug,packet Address-Time = 20
12:34:55 dhcp,debug,packet Msg-Type = ack
12:34:55 dhcp,debug,packet Server-Id = 192.168.100.1
12:34:55 dhcp,debug,state dhcp-client on ether1 entering <bound> state
12:35:05 dhcp,debug,state dhcp-client on ether1 entering <renewing...> state
12:35:05 dhcp,debug,packet dhcp-client on ether1 sending request with id 2036451535 to 192.168.100.1
12:35:05 dhcp,debug,packet ciaddr = 192.168.100.20
12:35:05 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:35:05 dhcp,debug,packet Msg-Type = request
12:35:05 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:35:05 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:35:05 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:35:05 dhcp,debug,packet dhcp-client on ether1 received ack with id 2036451535 from 192.168.100.1
12:35:05 dhcp,debug,packet ciaddr = 192.168.100.20
12:35:05 dhcp,debug,packet yiaddr = 192.168.100.20
12:35:05 dhcp,debug,packet siaddr = 192.168.100.1
12:35:05 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:35:05 dhcp,debug,packet Subnet-Mask = 255.255.255.0
12:35:05 dhcp,debug,packet Address-Time = 20
12:35:05 dhcp,debug,packet Msg-Type = ack
12:35:05 dhcp,debug,packet Server-Id = 192.168.100.1
12:35:05 dhcp,debug,state dhcp-client on ether1 entering <bound> state
12:35:15 dhcp,debug,state dhcp-client on ether1 entering <renewing...> state
12:35:15 dhcp,debug,packet dhcp-client on ether1 sending request with id 2036451535 to 192.168.100.1
12:35:15 dhcp,debug,packet ciaddr = 192.168.100.20
12:35:15 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:35:15 dhcp,debug,packet Msg-Type = request
12:35:15 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:35:15 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:35:15 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
12:35:15 dhcp,debug,packet dhcp-client on ether1 received ack with id 2036451535 from 192.168.100.1
12:35:15 dhcp,debug,packet ciaddr = 192.168.100.20
12:35:15 dhcp,debug,packet yiaddr = 192.168.100.20
12:35:15 dhcp,debug,packet siaddr = 192.168.100.1
12:35:15 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:35:15 dhcp,debug,packet Subnet-Mask = 255.255.255.0
12:35:15 dhcp,debug,packet Address-Time = 20
12:35:15 dhcp,debug,packet Msg-Type = ack
12:35:15 dhcp,debug,packet Server-Id = 192.168.100.1
12:35:15 dhcp,debug,state dhcp-client on ether1 entering <bound> state
12:35:25 dhcp,debug,state dhcp-client on ether1 entering <renewing...> state
12:35:25 dhcp,debug,packet dhcp-client on ether1 sending request with id 2036451535 to 192.168.100.1
12:35:25 dhcp,debug,packet ciaddr = 192.168.100.20
12:35:25 dhcp,debug,packet chaddr = 48:A9:8A:??:??:??
12:35:25 dhcp,debug,packet Msg-Type = request
12:35:25 dhcp,debug,packet Parameter-List = Subnet-Mask,Classless-Route,Router,Static-Route,Domain-Server,NTP-Server,CAPWAP-Server,Vendor-Specific
12:35:25 dhcp,debug,packet Max-DHCP-Message-Size = 576
12:35:25 dhcp,debug,packet Client-Id = 01-48-A9-8A-??-??-??
Note that the 192.168.100.0 IP address range is used by the Virgin Media Super Hub. The externally visible dynamic IP address was not changed. It appears that Virgin Media rarely change them.
Not sure this can be considered solved. I have more configuration to do before I try swapping routers. Until then I will not know if there are long term problems with the stability of the connection. Hopefully, this thread will be of some use to others who experience similar issues.
Many thanks to @TonyHoyle, @bpwl and @moschops for their involvement.