I found a solution myself. It can be extracted from the TsBitBtn source.
It is not so easy as native DrawFrameControl but it is not so difficult as I first thought when looking into the source code.
A few notes for anybody who might be interested:
You must be a registered user to have sources.
Just start with PaintItemBG function which is located in the PrepareCache function.
This function draws the entire button background into a cache bitmap, which must be then copied to button canvas.
Initialize the cache bitmap exactly like it is done in the PrepareCache function.
Furthermore CommonData must be properly initialized (don't forget the AfterConstruction and Loaded methods).
Finally State parameter signals the button shape.
It is even quite easy to implement timed fading, just take look at the DoChangePaint function.
To add this, you need the PrepareCache function and call it in the AC_PREPARECACHE message handler.
This button might later be part of my KControls package so you might take a look.