I'm not sure if this is exactly the same as what you are doing, but it looks like what I have in some applications where there is a list of custom widgets. And it slows down significantly when you create and destroy tons of widgets.
If the problem is with fewer common widgets, but just created and deleted a lot, you can just create widgets once and change the data of these widgets only as the information is updated ... as opposed to creating new widgets every time the information changes. That way, you can even change data from streams without worrying about creating widgets.
Another situation is where you display a list with custom widgets, and there are TON results. I notice that it always slows down when you have 1000 custom widgets in the list. The trick my colleague came across was to have a fake list where it uses the static number of slots on the display. Let's say it shows 10 slots in a view. The scrollbar does not actually scroll down through the MORE widget ... what it does is scroll DATA through 10 visible widgets. You can achieve insane performance gains. But only if this is an acceptable display style for your application.
source share