I suppose most exchanges do use bitcoind (an educated guess based on reviewing leaked sourcecode of some exchanges in the past). I think the amount of calls is relative, and like others have said: a lot depends on your hardware... When you run an exchange, i don't think you'll be making dozens of json-rpc calls a second... You basically need to request new deposit addresses whenever a clients requests a new address manually, and let bitcoin core call an external command on incoming blocks and transactions funding one of it's monitored addresses...
If you're storing everything on SSD's in a proper raid config, setup a good cache, a decent CPU, fast ram,... I guess you should be able to run a decent size exchange on one or two nodes.
I have tried running a bitcore explorer a long time ago, and if i remember correctly, bitcore was actually using a fork of bitcoin core with only minor changes to the sourcecode (most changes were made in order to be able to build more indexes if i'm not mistaking)... So i guess you should also be able to run a decent size block explorer using bitcoin core.
EDIT: https://github.com/bitpay/bitcoin/tree/v1.15.1-nobig