Not exactly clear what you are trying to do, but in short: don't reinvent the wheel, use Quartz. That gives you the option of DB persisted jobs, retrying, re-scheduling and detailed debug logs and more.
Before your post I already started going down the Quartz road just to see if it was an ejbTimer issue. Quartz was fairly easy to plugin and I did not have to change any code, just components.xml and add a property file. Using Quartz, I started seeing the same thing and worse. I turned Seam logging to DEBUG and noticed that Seam was trying to inject Events and just hung.
The problem ended up being not enough threads for the timer. We increased Quartz to use 20 threads, and everything started working as expected.
The sad part of debugging this was there was not a single exception.