Not pretty but this would work I think. Would these computer names work?
Pool 1 : VM10101-VM10160
Pool 2 : VM20161-VM20180
Pool 3 : VM30181-VM30199
If so, you can try this out in a test environment. Create the 3 pools using the same naming you know already but changing the 3rd digit to like 1,2,3 respectively based on pool. Then set Pool 1 to do maxiumum of 60 desktops.
Pool 2 should be first be set to naming pattern VM2016 which should begin to generate the first VM named VM20161. Once it is created, edit the pool to do naming VM2016 and max of 20 desktops, which should have it put out from VM20161 up to VM20180, repeat for Pool 3 changing variables.
I believe reading other posts, View Manager will not go back to create the lower number desktop if a higher is created, and so if a VM20161 exists, and ALWAYS exists, it will never create a lower number in that pool, and your max is 20 so never go over VM20180.
Assuming this all works, it will nto be super clean, and you need to keep an eye on it, but there is no other way I can think of.