I forked the MFRC522 github and I modified the code to remove the GPIO and use spidev instead.
Try my version just too see if it works better. it is able to read 7 and 10 bytes CARD.
xfer toggles the chip select on every byte. xfer2 won't! It will wait until the last byte is transferred.Then you need 48 clocks ( 6 bytes) to read the data. you need to use xfer2 in python.