Don't use array formulas, use regular formulas.
For example, let's say you have a formula that adds column B if the value in column A is greater than 10. Don't create an array formula with a conditional to do this. Instead make a new column C with the formula:
=If( $A > 10, $B, 0 )
So the third column contains either B's value if the condition is met or 0 if it is not met. Now just sum column C. This method is usually a lot faster than an array formula. It is called a "helper column".
If it is still slow to calculate, use macros or VBA to compute the values; that way you only have to compute them once, not recaculate them if things don't change. So, in the above example, instead of using the conditional formula, we can use a macro (or VBA code) to compute the If-formula and put the result in the cell. Then run the macro whenever you need to compute the table and generate values. With no conditionals (If-statements) in the spreadsheet itself, it will calculate much faster.
How to Do Everything in Memory
If you want to get rid of the sheet entirely, you can do everything in memory using static variables in a VBA code module:
Dim MyArray(1000, 2000) As Double
... compute all the values of MyArray
Function GetValueFromMyArray( Dim x as Integer, Dim y as Integer )
GetValueFromMyArray = MyArray( x, y )
You can then use this function in any cell of your workbook to get values out of the array you created which is memory. For example, a cell in your workbook could have the formula:
=GetValueFromMyArray( 5, 6 )
This would retrieve the 5th row, 6th of the array that is in memory.