Yeah, you can't do that. I know, it sucks.
The easy way to work around is to throw in a AddRange method to your BusinessObjectCollectionBase:
Public Class BusinessObjectCollectionbase(Of T As BusinessObjectBase)
Inherits BindingList(Of T)
Public Sub AddRange(values As IEnumerable(Of T))
For Each Item As T In values
Me.Add(Item)
Next
End Sub
End Class
and then in your code:
Dim appointments As New AppointmentCollection
Dim businessBases As New BusinessObjectCollectionbase(Of BusinessObjectBase)
businessBases.AddRange(appointments)
Viola! Both collections now hold references to the same objects but as differing types.