How to remove noise from this image without causing the crack to 'shrink'?
As first preprocessing step use edge-aware smoothing methods before converting your image to binary. These methods do not modify the sharp boundaries that are larger than a parametric size. Following search reveals many methods: 

https://scholar.google.com/scholar?q=edge+aware+smoothing

I am not quite sure if the method will work in your case, but it seems there is an edge aware smoothing filter in OpenCV: 

http://docs.opencv.org/3.1.0/d3/d14/tutorial_ximgproc_disparity_filtering.html