This probably means your web host has some sort of rate limiting. Shared hosts often have this to protect the resources on the server from being ‘claimed’ by one website.
Best option is to reach out to your web host to find out if they are willing to give you some extra room. The rate limit is a good measure when your website is constantly creating requests, but since a calculation usually doesn’t happen that often, maybe they can put the calculation script on an allow list.
Sometimes this means you’ll have to pay a bit more for a ‘bigger’ setup. Because especially the cheap web hosts can be this cheap because they can put a lot of websites on a small pack of resources.
Another option is to play around with the step size parameters in your wp-config.php (see below). A bigger value means less requests, but with the drawback that it takes longer to complete (which may cause the request to time out on the server). Maybe you can find a value that will work for your situation. But, I think this will only buy you a bit more time before the problem will appear again (if your data grows in size).
Add this to your wp-config.php and change the numbers:
define( 'FOOTBALLPOOL_CALC_STEPSIZE_MATCH', 400 );
define( 'FOOTBALLPOOL_CALC_STEPSIZE_QUESTION', 400 );
define( 'FOOTBALLPOOL_CALC_STEPSIZE_SCORE', 400 );
define( 'FOOTBALLPOOL_CALC_STEPSIZE_RANKING', 400 );
Last option: delete old matches or inactive users. But this of course has impact on your ranking (deleted matches will no longer be part of your ranking).