The original crankshaft position sensor was installed with a thick paper spacer on the end to set the air gap. Replacements from the dealer usually also use the paper spacer and is either included with it and may be already glued in place. It will slide off as soon as the engine is started. After removing that sensor, a new paper spacer must be stuck on when reinstalling it.
Most aftermarket replacement sensors have a thin plastic rib molded into the end to set the gap. That rib will wear away as the engine runs. Once removed, to reinstall that style, the remaining part of the rib must be cut off, then a paper spacer is used.
The relearn procedure you mentioned is pretty much automatic. Once the engine is running, the computer will memorize the relationship between the pulses from both sensors.
The code you have can also be caused by a jumped timing belt. When the belt jumps one tooth, it will be detected by the change in relationship in the signals from the two sensors, and engine performance will be down. At two teeth off, the computer will shut the engine down to protect it. At three teeth off, the coasting pistons will hit and bend any open valves. I doubt the timing belt is your problem because it won't cause an intermittent problem.
I'm surprised the code isn't more specific. It does refer mostly to the crankshaft position sensor but the reference to the camshaft position sensor could be because the computer needs both signals so it can compare them to each other. The camshaft position sensor has a higher failure rate on the four cylinder engines, but there is a different, very specific code, P0340, for that sensor. The most accurate description of the code you have can be found by reading it again with a Chrysler DRB3 scanner. The P01391 and P0340 are called " generic scan tool codes". That is how they are displayed on aftermarket test equipment. While the P0340 has only one description, the P01391 has two. That code will be displayed as one of two possible " hex" codes on the Chrysler scanner. Code 9D is " intermittent loss of signal from camshaft or crankshaft position sensors. Code 28 is " no reference signal from crankshaft position sensor during engine cranking". It seems likely the crankshaft position sensor is most suspect, but reading the code with the Chrysler scanner will tell for sure.