Right now network discovery is very slow due to the serial nature of the 1:1 mapping of rules to discoverer process. Its exacerbated by having multiple check within a single network discovery rule.
The issue is if the discoverer process is terminated, e.g. stop/start zabbix_server or zabbix_proxy then the network discovery starts from the very first host in the subnet. It could have been that your were 3/4 on the way through the subnet in the network discovery rule, but now you're back to square one. It seems like state could be save in a table to be retrieved once the discoverer process starts executing the checks so that it resumes from the last ( or near as) IP:Port/Protocol rather than from the beginning.