Data type for storing an array of flags (a bitmap/bit array)
I can't advocate strongly enough not to use a single field for this.

I'm currently dealing with maintaining a very large dataset with a bigint bitmask field and it's a bit of a performance nightmare.

If you check a single bit it's fine.  If you check more than one bit performance degrades very quickly.  

Due to the nature of bitmask integers, the data distribution will be very imbalanced and you'll get suboptimal plans.  

Multiple bit checks result in range or index scans with a function running against every row.  It's a mess.

My workaround was simple - I made a table to store the PK for each of the conditions to be checked.  This is counter-intuitive initially but the space needed is low (you only store the PK) and lookups are lightning fast, especially if you use a UNIQUE CLUSTERED INDEX.  

You can add as many conditions as you want without affecting your main table, and updates also don't affect your main table.  

Indexing is simple since you just index all the lookup tables individually, and since your clustered key is the same on your main table and the lookups all your evaluations are merge joins which are very efficient.