core: different frame limiter implementation

should avoid useless sleeps while lagging behind