What you're calculating (the correlation between $A$ and lagged copies of $B$ and $C$) is called the the cross correlation. This isn't typically suitable for testing causality because it neglects the effects of autocorrelation. The problem is that autocorrelated time series may show spurious peaks in the cross correlation, even if they're truly independent. For example, imagine $A$ and $B$ contain smoothed white noise. So, they're independent and vary slowly over time (high autocorrelation). Because of the slow variation, there's a good chance we can find some lag by which we can shift $B$ where it will line up reasonably well with $A$.
Granger causality is one way to deal with this issue. The idea is to predict the value of $A$ using two different models: The first uses past values of $A$ itself. The second uses past values of both $A$ and $B$. If using past values of $B$ improves our prediction beyond using $A$ alone (as assessed by a statistical test) then we say that $B$ Granger-causes $A$.
Multivariate versions exist, so you can test the effects of both $B$ and $C$ on $A$. Typical Granger causality tests are based on autoregressive models, so they assume stationarity, and that causal effects are linear. But, extensions do exist if you need to loosen these assumptions.
Note that Granger causality is not 'true' causality--even if we determine that $B$ Granger-causes $A$, this doesn't necessarily imply that $A$ would have changed had we directly manipulated $B$. For example, this could happen if $A$ and $B$ have no direct causal link, but are both driven with different lags by some unobserved, third process $H$.