I have to admit I
borrowed this answer but this is basically the same behavior I have seen before. The one thing most people forget is that TS/RD licenses do not get released back to the pool when the user disconnects, instead they are assigned for a period of time and eventually released back to the pool at which point the client either gets a new license or gets a temporary license for 90 days.
You can't really do this, and it shouldn't be necessary either.
TS CALs have an expiration date of 52-89 days after issueing. Licenses
that are not used (because the client does not connect to the TS
anymore) will automatically be returned to the LS after the expiration
date. In the meantime, your new clients will get a temporary TS CAL,
which is valid for 90 days.
Note that these time periods are choosen to make sure that your
temporary license lasts long enough for the old license to become
available again. So replacing one client with another can never cause
you to run out of TS CALs. If you are reaching the end of the 90 day
temporary license period without having TS CALs available, it means
that you have been connecting with more clients than you have licenses
and you have to buy extra TS CALs.
I would first make sure that your Citrix farm is properly using the same license server, or that your license servers are set up in a pool. If they aren't, you will get this round-robin type crap. The problem you list here sounds like your TS endpoints (Citrix) are not properly assigning a single license. Either way, you may end up having to call up Microsoft and possibly Citrix to understand what the issue is here.