Symbol swapping and sizing has a bit of nuance. The squeezing and stretching happens when you swap the current symbol for another one of a different size. It depends on your symbol setup, but, in general, you can avoid the squeezing/stretching with these two options:
Activate the option “Swap at Original size” - this fits if you’re swapping an icon that has the same width but different height, for example
Constrain the symbol’s width and height
Navigate to the symbol’s source, select the symbol layers and in the resizing section, activate both the horizontal and vertical axis of the symbol so it will always keep its proportions
Let me know if these help and if not, can you share a bit more details of what you’re building and the symbol swaps you need to make?