Currently, redis has maxclients limit of 10k
So, I cant spawn more than 10k celery workers (a celery worker with 200 prefork across 50 machines).
Without changing redis maxclient limit, what are some of the things I can do to accommodate more than 10k celery workers?
I was thinking setting up master-slave redis cluster but how would a celery daemon know to connect different slaves?
Don't. Your Redis command latency with over 10,000 connections will suffer, usually heavily. Even the basic Redis ping command shows this. 
Step one: re-evaluate the 10k worker requirement. Chances are very high it is heavily inflated. What data supports it? Most of the time people are used to slow servers where concurrency is higher because each request takes orders of magnitude more time than Redis does. Consider this, a decently tuned Redis single instance can handle over a million requests per second. Do the math and you'll see that it is unlikely you will have the traffic workload to keep those workers busy without slamming into other limits such as the speed of light and Redis capacity. 
If you truly do need that level of concurrency perhaps try integrating Twemproxy to handle the connections in a safer manner, though you will likely see the latency effects anyway if you really have the workload necessary to justify 10k concurrent connections.
Your other options are Codis and partitioning your data across multiple Redis instances, or some combination of the above.
Celery w/ Redis broker: Is it possible to have more 10k connection