I'd start with basics, every call made to SiteCatalyst costs money.
Tracking widgets as pageViews can be very expensive.
Instead, look at at widgets as content displayed and interacted with.
It make sense track only interactions as pageViews and keep views collated in one single call.
Imagine, one page having 5 widgets loads, 6 (5+1) unique pages in pages report doesn't give any insights. Though any interaction with any widget on the page, would be interesting to see as pages - depending on the website.
To keep it short, track widgets loaded with the main pageLoad call in a list prop or listVar(hit expiry) with a view event.
Now, any interaction there on should be tracked as pageView with pageName including the widget info and listVar(expiry as HIT).
Hope this helps.
If making multiple calls is the only solution, then use an extension and write a script to loop through an array and fire utag.view for specific UID.