I don’t believe Twitch is timing you out here. I ran a script that looped through 20 Twitch users and pulled their public channel data just as you do here, and I had no issues. It took 20.17 seconds to make and receive the 20 requests. Your timeout is likely coming from other sources.
I’m not sure if there is a better API call for batching requests like this, so my suggestion would be to continue to use AJAX to handle all of this, but don’t batch the entire list of API calls before rendering individual user requests. In other words, after each API call, render your new HTML element before moving on to the next iteration in your loop. You may need to push the for loop into your JavaScript handler to best accomplish this.