Deciding Timer Interrupt time
If you write the mainline code where the SPI Flash Writes take place in the proper way then the occurrence of the timer interrupt should not corrupt the operation in progress. If the main stream operation has certain timing dependancies that must be kept then it is necessary to disable the interrupts for short periods of time when the critical timing windows occur. 

Another thing is to keep the code in the timer interrupt very simple and concise. Do not put any real decision code in the timer routine. Instead make yourself a collection of software managed timer variables. The timer interrupt simply checks each one of these variables and if non-zero it would simply decrement the value by one. The mainstream code would set one or more of these variables to suitable non zero values when a time period is needed. Then in the normal course of its mainline operations the timer variable can be checked to see if it has gone to zero. This can thus signal a timeout or time delay has occurred.