Hi,
we had the same issue.
On our side the issue was that the vms had 8GB Ram, but they were limited to 6GB, so over usage time this leads to balooning an the vm.
This balooning was a problem when DRS decides to move your vm to another host, in that case the migration took a lot longer than without balooning, so that the view agent was unavailable for too long and the user got a disconnect. If he tries to reconnect immediately view tries to reach the existing session but it is not present and this leads to a new session on a new vm within the pool.
Exactly then you will see duplicate sessions within Horizon View.
We fixed that by setting the limit for RAM on the VM on the exact same value as the given RAM, for example 8GB, so the limit is set to 8GB.
Maybe this helps.
Best Regards