Seeing as Canvas does not currently expose an API call to allow you to make a single request to download all submissions for a single assignment, along with necessary filters for graded vs. ungraded etc., you will likely end up looping and making multiple calls.
The approach I have taken in this scenario (not specifically for submission artifacts) is to use a workflow that I can throttle. In other words, have an asynchronous task that runs in the background where you can control how fast/slow it runs, control the frequency of API calls if you are concerned about exceeding the allowed threshold. Have the task send an email/text when complete and you can collect the results at that time.
In the meantime, you might consider starting an idea.
This one has been archived, but you may be able to get this group interested and voting on your idea:
It is not exactly the same, but I believe the goal is similar: one request to download bulk content instead of iterating and making multiple calls.
These ideas are very similar to what you are wanting, but is also archived:
There are other ideas that are in the same neighborhood as what you want. If you start a new idea, reach out to those following the other ideas and see if you can get them to support your idea. I definitely see value in what you are trying to accomplish, let me know if you create an idea and I'll definitely support it.