50 messages per second do not apply to this. However, there is some other limit, based on available market data lines.
But polling snapshots have another problem (at least it had a couple of years ago) - snapshot could be cached if polled too frequently. So instead of new prices, you are getting something stale.
Instead of subscribing, why not poll each ticker to get the last price? I think IB has a limit of 50 messages per second (correct me if I am wrong) For 800 tickers, that would be 16 seconds. So you would poll each ticker about every 16 seconds. Would that work for you?