Many thanks for all of these ideas.
The issue, it turns out, is that LegendreP, by default, attempts to return an answer in polynomial form. As the order increases, the coefficients in the polynomial get enormous and all sorts of numerical horrors appear.
Applying //N after the function call is not the solution, in fact the answer is to put the N wrapper around the argument as follows:
LegendreP [1000,N[x]]
which internally invokes a purely numerical solution using the recurrence relationship I imagine.
Once again, thank you for your prompt and helpful ideas. David