Hundreds of millions of rows: Index by composite BIGINT, VARCHAR, or CHAR of HASH?
There is no advantage in any form of PARTITIONing based on what you have said.

The simplest, most obvious, index is also the best:  Have the PRIMARY KEY be the email address (if it is unique), or start with the email address plus something to make it unique.

This is possible

id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT -- for uniqueness
...
PRIMARY KEY(email_addr, id)  -- id tacked on for uniqueness
INDEX(id)  -- to keep A_I happy.


What makes you think that "one huge table" is a problem?  No, PARTITION BY HASH does not buy you anything.

You said "shard" and mentioned 4096 buckets.  Technically that means you have 4096 servers to put parts of the data on.  I assume you really meant PARTITION or (yuck) 4096 manually-handled tables, which is limited to a single MySQL instance.

If you really did mean spread across multiple servers, then, sure, the bottom chunk of the SHA256 is a good idea.  MD5 is probably faster and just as good for this purpose.  I would then use a dictionary lookup with 4096 elements to point to however many servers you currently have.