If You stopped L3 agent and keepalived process together, than keepalived from other node will decide to be new master and L3 agent on this other node will configure everything for router. That is how failover works.
But in such case there is nothing what could do cleaning of router's config on "old" node (control01 in Your case) as You just stopped L3 agent there. So IMO this is not an neutron issue as neutron works here as expected.
Maybe Kolla shouldn't run keepalived processes for routers in same container as L3 agent?
If You stopped L3 agent and keepalived process together, than keepalived from other node will decide to be new master and L3 agent on this other node will configure everything for router. That is how failover works.
But in such case there is nothing what could do cleaning of router's config on "old" node (control01 in Your case) as You just stopped L3 agent there. So IMO this is not an neutron issue as neutron works here as expected.
Maybe Kolla shouldn't run keepalived processes for routers in same container as L3 agent?