Your network is trained to predict the next timestep given the previous, perfect timesteps (which form one kind of input distribution). Once trained in such a fashion, you should also train it to make predictions given its own predictions (which form another kind of input distribution which is probably a bit different from the real input distribution, hence the divergence). Not my area of expertise but you should be able to find code for this somewhere.
LSTMs are fine - your problem is what I talked about above.