How can bit slicing be constant time, when Mix Columns is in the cipher
You can (and should) do the reduction in constant time using masking.  That is, instead of using the following (non-bitsliced) pseudo-C code to do the reduction:

if ((result &gt;&gt; 8) &amp; 1) {
    /* bit 8 is set: clear it and flip bits 0, 1, 3 and 4 */
    result ^= 0x11b;
}


you can simply do:

result ^= 0x11b * ((result &gt;&gt; 8) &amp; 1);


(where your compiler may optimize the multiplication by a constant into a series of bit operations, if it's more efficient on your CPU architecture).

This can then be trivially bitsliced, e.g. like this:

/* bit0 .. bit7 store the 8 bits of the result(s), bit8 is the overflow bit */
bit0 ^= bit8;
bit1 ^= bit8;
bit3 ^= bit8;
bit4 ^= bit8;