Not sure what i am doing wrong here
You read the data before you sent the command:
address = SPI.transfer(readData | WHOAMI);
As you can see in the diagram on page 30 of the datasheet, you first have to send the command byte, then read the answer:
SPI.transfer(readData | WHOAMI);
address = SPI.transfer(0x00);