I can suggest a workaround, but you will need to decide whether using it is feasible for you or not.
You mentioned that your Database guy has made you a View based on that function. Now that View is slow to load, but does load in SQL Server Management Studio eventually. The workaround would be to create a separate Table out of this View. This Table would be static and thus will load normally in ArcGIS or SQL Server.
Now, obviously the whole point of using a View is because the data will not be static. So, to see the new data, you will need to create a SQL Server job, which can run at any decided intervals, truncating the Static table and then updating it again with records from the View.
The factors to consider:
1) How frequently will the data in the View change? If it hardly changes, then running the Job at the start of every day, should suffice. If it changes frequently, then you can decide upon the interval accordingly.
2) How much data are you dealing with in the View. Truncating the Table will not take much time, but updating the static table with the data from the View will take time based on the amount of data involved.
Example for reference:
Lets assume that the View that the Database guy gave you is View1, owned by GIS user. So it is dbname.gis.View1
SELECT * INTO dbname.schema.newtable_name FROM dbname.gis.View1
The above will create the new static table. Then use the below two SQL in the SQL Server Job:
Truncate table dbname.schema.newtable_name
Insert INTO dbname.schema.newtable_name SELECT * from dbname.gis.View1