So Max, I have looked closely at this and discussed with the original developer.This is designed behavior.
Please use GetOverlayControls to examine which controls are already on the overlay. The returned UIElements can then be queried for their size and placement information [on the overlay]. For example, perhaps you have a preferred placement and prior to adding your control you want to detect if a control (perhaps placed by Pro or another add-in) already occupies that "space". Based on your examination of the existing overlay controls, your logic could adjust your default position accordingly, alter ZOrder, etc.
It is not intended that you cast the controls to their underlying type. Simply use them "as" UIElement. Cast to FrameworkElement also, if needed.
If you do need reference to your control "later on" you should hold a reference to it.
We will update the API reference for AddOverlayControl and GetOverlayControls for 2.4