Using the CellTemplateSelector is the only solution for the desired scenario. What I can suggest you would be to optimize the applied DataTemplates - avoid using StackPanel inside of them, you can replace it with Grid. Also make sure that the PivotGrid itself is not placed inside of StackPanel (use Grid instead) as the StackPanel measures with infinity and this breaks the virtualization - all of the cell containers will be generated at once.
Hope this will help you to optimize the performance.
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos
and start improving your app based on facts, not hunches.