I think you named the problem in your title :) 'asynchronous' is exactly the cause - loading the utility is on and since the request will be made and execution will move on meanwhile..entering yet another livequery callback if more matches are available. Frankly I think it's really bad idea to put a script loading inside a function that will be looped multiple times - it's just somewhat pointless. I see no reason not to just include it like a normal script:
<script src="js/utilities.js" type="text/javascript"></script>
I think this is the simplest and most reasonable solution.
However, if you really can't use this for some reason, either ensure local copy of the variable for the callback via context (see $.ajax context option since getScript is a $.ajax shortcut it should have it too) or try synchronous ajax...the last one is an option, but please don't really try it in this case :)