По каким полям планируете еще делать сортиовку, будет ли поиска по тексту новости, если нет, то рекомендую создать еще одну таблицу которая будет аккумулировать все новости, т.е. id type news_id news_date created_at updated_at выборку делать по ней, с подгрузкой полных новостей, polymorph relation
если нужны другие поля для сортровки помимо type или date добавляйте, да дублирование, но объем не большой, а отдача будет намного лучше union или view
не уверен нужно ли настолько заморачиваться автору поста. у меня то как раз есть отдельная табличка с полимофом в различные типа новостей. есть поле sort чтобы можно было вручную задать положение закрепленной новости, и в целом на этом все.