If you just want different styles on your Shapes you could use the ShapeStyleSelector of the RadDiagram (it work like every styleSelector). If you want to inherit our RadDiagramShape you'll also have to inherit the Diagram and override its GetShapeContainerForItemOverride method.
The CreateLink method should be called every time you create a new Link and that's normal.
I've attached a sample project with MVVM and custom RadDiagramShape so could you please examine it and if you have further questions feel free to ask.
the Telerik team