I ended up finding a solution that would work.
First, anything that is added dynamically needs an ID assigned to it. (wasnt the issue here though)
Second, dynamically added controls must be created every time a page loads.
Third, using the LoadControl method causes the execution of the page lifecycle for the loaded control to be different than if it was included.
So my solutions was to
Load the control in the Page_Load every time its called, postback or not
Any scripts in that control need to be in a radscript block if im not mistaken
Also in that control, anything here dynamically created must be done each Page_Load with the same id
Then if you have a tooltip that calls another control - for that control, I used OnPreRender to set the things I needed to show.
That last part above was my solution to it. Otherwise the page lifecycle does the ajaxupdate after that controls pageload has already been completed.
edit: from the load control details
When you load a control into a container control, the container raises all of the added control's events until it has caught up to the current event. However, the added control does not catch up with postback data processing. For an added control to participate in postback data processing, including validation, the control must be added in the Init event rather than in the load event.
The reason I used Page_Load instead of the init which this says you must do is because I dont know what control I am loading untill after the Init event which is confusing but its working.