Chunk loaders is how it is traditionally done. This is normal behavior of minecraft, and the reason chunk loaders were created.
If that is too much for what you need to do, the only other option is to map your tile entities(coordinate based key) and tick them all on a server tick(burn time value), and have the tile entities check that map for it's burn time. This would only keep the burn time ticking, but would have no impact on anything else however. Also the map would need to be saved or burn time would be lost on every reload. Chunk loading would actually be an easier to implement way of doing this, but the way described above would also work without sacrificing as much performance as chunk loading does if you only want it to keep 'cooking'.
Edit: An easier way would be to make the burntime tick counter realtime aware. You could have it's burntime be based on realtime instead of ticks. You could set a start time, and it's current burn percent is based on the current time.
But how to use the ChunkLoaders?I think it will be more easy to do with the method tick but it should be bugful (and partly because i don't know how to use tick method)