Instead of using delays between putting the call on hold and looping, use a menu with a timeout that has the same value you were using for delay. You don't have to put a prompt on the menu since you stated you were already playing one. Set the repr...
Here is a link to the specific service I was referring to. You may be able to modify it to do what you need. http://www.myvoipsource.org/index.php?option=com_content&task=view&id=36&Itemid=85