Switch to GCD timer source (slightly more efficient than previous implementation)