It does indeed show surprise, but it is much more light-hearted and silly than "no shit." "No shit," is an expression that shows that what one has said was rather obvious and is very rude to say, since it can sound condescending, depending on who you are talking to and the tone of voice.
"butter my buns and call me a biscuit" sounds funny, so it is sure to make people laugh and lighten the mood a little bit.