Improving Constrained Generation in Language Models via Self-Distilled Twisted Sequential Monte Carlo