I can suggest two other methods which can be better in some sense that adding noise.
removing correlation
instead of adding noise, let's remove correlation. you may have heard about Cholesky matrix method of generating correlated randoms. It starts with having a set of uncorrelated series, then making them correlated according to a given correlation matrix. we can modify this method to get your from one correlation matrix to another.
So the standard method is to get the desired correlation matrix and factor is into a product of two lower triangular matrices $C=L'L$. Then if you apply the matrix to a set of uncorrelated standardized numbers $X$ you get $XL$, if you get its covariance matrix $(XL)'XL=L'X'XL=L'L=C$
Now, we start with correlated numbers $Z'Z=\Omega\ne I$, and want them to have correlation matrix C. So, let's start with factoring the current correlation matrix $L_\Omega'L_\Omega=\Omega$. We can find $X$ such that $Z=XL_\Omega$: $$X=Z(L_\Omega)^{-1}$$ Inverting a triagonal matrix is trivial, e.g. in two dimensional case you have $L_\Omega = \left[ {\begin{array}{*{20}c} 1 & 0 \\ \omega & {\sqrt {1 - \omega ^2 } } \\ \end{array}} \right] $ Hence, $L_\Omega^{-1} = \left[ {\begin{array}{*{20}c} 1 & 0 \\ -\frac{\omega}{\sqrt {1 - \omega ^2 } } &\frac 1 {\sqrt {1 - \omega ^2 } } \\ \end{array}} \right] $
Now apply desired correlation matrix C decomposition $L'L=C$ as follows: $$Y=XL=XL_\Omega^{-1}L$$
In two dimensional case you have the following transformation matrix: $$L_\Omega^{-1}L=\left[ {\begin{array}{*{20}c} 1 & 0 \\ -\frac{\omega}{\sqrt {1 - \omega ^2 } } &\frac 1 {\sqrt {1 - \omega ^2 } } \\ \end{array}} \right] \times \left[ {\begin{array}{*{20}c} 1 & 0 \\ -\frac{\rho}{\sqrt {1 - \rho ^2 } } &\frac 1 {\sqrt {1 - \rho ^2 } } \\ \end{array}} \right]=\\ \left[ {\begin{array}{*{20}c} 1 & 0 \\ -\frac{\omega}{\sqrt {1 - \omega ^2 } }-\frac{\rho}{\sqrt {(1 - \rho ^2)(1-\omega^2) } } &\frac 1 {\sqrt {(1 - \rho ^2)(1-\omega^2) } } \\ \end{array}} \right]$$
This looks a bit intimidating, but you don't have to do this manually, and can use software. The second, notice how the first variable doesn't change! For instance, if you have SPX and you stock returns, then at least one of them remains the same after the transformation. Then we don't introduce external noise. We only push that exists in the data already from one place to another.
re-ordering variables
Second method is to not change the observations at all, but instead rearrange the observations in variables in such a way that correlation changes. Consider this: if I take random samples from both series, and calculate the correlation between these samples, then correlation will be zero. So, simple rearranging the order in variables will change correlation.
Advantage of this method is that variances remain the same, and overall distributions remain intact in the dataset. Since, you work with stock return, there's no autocorrelation, so rearranging doesn't impact this aspect at all, at least in theory