MAINT: avoid redundant copies in scipy.sparse

This is a rewrite of https://github.com/scipy/scipy/pull/4235 using the `copy=False` keyword argument of `astype` instead of writing and using a new helper function.

closes https://github.com/scipy/scipy/issues/4203

On my system this PR speeds up the sparse matrix multiplication example provided in https://github.com/scipy/scipy/issues/4203 by about 6x.