You can radically simplify your formula, if that's sufficient.
Your current formula is checking the budget category against every individual cell in the Income table using an OR() statement. If that fails it then checks against every cell in the Savings, and so on.
You can replace all the OR() statements with a lookup using MATCH()
Using MATCH() you can search the entire INCOME table for the Budget Item. If it's found you're set, otherwise it returns an error, which triggers another MATCH() on the SAVINGS table.
Here's my Transaction::B2 cell based on my earlier example, with three separate tables for Income, Savings and Expenses:
=IF(ISERROR(MATCH(A2,Source,0)),
IF(ISERROR(MATCH(A2,Saving::Fund,0)),
IF(ISERROR(MATCH(A2,Expense::Expenses,0))," ", "EXPENSES"),
"SAVING"),
"INCOME")
It's not dependent on the number of rows in the lookup tables - it will search the entire column, so you can add additional categories at will.
It's still simpler if you have a single table, but I see now that's not practical, so you're still going to have to handle each table separately, but at least this is easier and more flexible.