Use rigidbody constraints, where you would use freeze position Y, and freeze rotation X and Z. I doubt that would have much effect on the framerate though.
How are you “dispensing” the cards? You could write your own collision detection. One way to do this (the obvious way) is to check the moving card’s edges against all the edges of the existing cards. The other way is to create a 2D array representing all the cards on the table. You start by clearing all the values to zero. Each time a card is placed you set all the values of the area of the card to 1. Now when the next card is dealt you check the area the card is moving into. If it’s non-zero, the card stops.
I’m not sure I understand what you are doing enough to help.
Calculate this by 1.0/30 for setting the rate to 30fps. Turn on Interpolation for all rigidbodies so it looks smooth regardless of physics update rate.