I do use 2 timers in the same way you do. I even used 3 in a project.
So, there's definitely no problem with the timer itself. It MUST work.
Please, perform a few more tests before giving up.
- register the irq before starting the timer
- remove alt_irq_enable; this is not required
- disable and reset the timer first of all, before programming period:
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_250M_IRQ, 0)
- try without enabling irq and make sure the timer runs; in other words, remove alt_irq_register() and read snap registers as you already do
Remark: writing both snap registers is not necessary; writing just one of them is enough to latch both.