The rate limit is just a fact of life, but if you use the back-off and retry mechanism your calls will eventually succeed.
For example, I have scripts using the Meraki Python library aio functions that could potentially make thousands*** of calls 'at once', but the rate limit and retry handling kicks in, things back off and retry, resulting in throughput at the rate limit, the library handles it all for me.
The alternative is to set timers and not issue calls any faster than the limit, but that is unreliable as someone else may make calls on the org at the same time as you and then rate limiting can still occur.
For some purposes you can use action batches, giving higher throughput...
https://developer.cisco.com/meraki/api-v1/action-batches-overview/
***if I am doing something that will generate high call volumes, I generally split it into smaller chunks to avoid just hammering on the org.