A 'word' is anything longer than a byte, actually. It usually means two bytes or 16 bits. But a word could be anything. It is defined mainly by the databus width of whatever is generating it.
So an INT (16 bits, 2 bytes) would store your 12 bits of data. The way the chip was designed, the dip switches are connected to the 4 bit address and the buttons are connected to the 8 bits data lines. However, it really just spits out whatever is on the address and data lines, so a manufacturer could implement it however it wanted to.
The receiver IC is designed to set its address as well and it only listens to messages decoded with its address nibble (4 bits). When that matches, it sets its 8 data lines to match the transmitted data.
So FFFF doesn't seem right unless the upper 4 bits are being set to 1 by default. For 12 bits, the max value should be 0x0FFF (4095 decimal).
So the encoder is capable of controlling 16 different devices (4 bit address) and 256 commands (8 bits data.) But that would take a micrcocontroller decoding the data lines on the receiver end and a microcontroller pre-encoding the data on the transmitter end. Usually they connect the relay or whatever directly to one of the data lines. So, in practice it would only handle a maximum of 8 commands (only 1 bit at a time set) because typically they only use the single chip, no microcontroller at all. This would be in your case as well.
So, what this means is that one single pin is being set for each button. So your commands are going to be 1,2,4,8,16,32,64,128 since these are the only values that will use a single pin. Your address could be anything, though, from 00 to 15. you could try every combination with your code to see which ones the fan responds to.
I would do this, though...
keep your command set for 'fan on', and send that with all 16 possible addresses. Output which address it is currently sending to the serial port so you know, and have it increment only when you tell it to so you have time to catch the right address. Once you have the addresses, that will always be the same for that device. So then you write a new sketch that fixes the address at what you found, and send all the combinations of commands (only 8 ) and observe what they do.