I agree with Peter's recommendation to keep this control "simple". Your process features both process and transportation lag, which would present a challenge for a PID controller even if you did have analog speed control of your fan drive.
If I were to attempt to introduce any complication to this loop control, it would be to continuously monitor whether the PV is waxing or waning. To avoid reacting to transient noise, I would accomplish this by creating two samples with a moving average and comparing them at the end of each "update window" to determine whether the temperature is rising or falling at any given time. I would also implement a deadband, so that my PV trend monitor would output 3 discrete states -- PV Rising, PV Falling or PV Stable.
Suppose that your temperature is rising, and you have exceeded the setpoint deadband. Your response would be to increment the fan speed. At the next interval for issuing an increase in fan speed (assuming that you are still above setpoint) you could disable the speed increase command in the event that your PV has begun to decrease, or has simply stopped increasing, even if the PV is still above setpoint.
This would give your control a measure of feed-forward capability that you would not have if your issuance of speed command "bumps" were only based upon whether you are above or below setpoint at any given instance in time.