It does not seem that python blocks can override start() and stop(), which they should be able to do. So, don't go too far down that path. I do not see anywhere in the code where this is used or would have been caught.
The embedded blocks are easier, be beware that GRC calls the init function to learn about the block. Therefore, you don't want any action taken as a result of a call to init, for instance spawning a thread and starting to send messages. Embedded python block are sort of a toy that turned out to be useful. In general, an OOT is a better idea, but an embedded block can work if it's simple enough.
Maybe someone else has figured this out. With just a quick look, I don't see how a Message Strobe kind of block can be implemented in python without start() and stop().
Here's kind of a hack: make a python block with a message handler that gets a periodic strobe from the existing Message Strobe block. In the handler, send out the message that you would have sent in the thread.