Allowing multiple fianancial types for same price set single contribution page
You can have multiple Financial Types in one Price Set and all on the same contribution page. The simple way to do it is to set the Price of the Price Field at $1.00 and just have one Price Field for each Fund. You can give each Price Field in a Price Set different Financial Types. Then donors would enter the amount they want to give. But, you could set it up as you describe above. The first Price Field for General Fund, you would use Pre-Field Help to Display your Section Title "General Fund". Then you would set this one up as General Fund $100 with the Price at $100, Financial Type "General Fund". Create another General Fund $500 with a Price of $500, Financial Type "General Fund". Etc. Repeat this pattern for "Scholarship" but give these a Financial Type "Scholarship". Then the donors would enter a 1 (or any number 2x$100) for the amount they want to give. Just make sure that the Default Financial Type for the Price Set is NOT any you are using in the Price Fields within it. Otherwise it will get confusing when you are pulling reports and you likely will get mixed data. Use Contribution or something for the Price Set Default Financial Type

Here is a quick rundown of how Civi handles Financial Types. When you create a Price Set and enter a value in the  Default Financial Type. It is stored in table civicrm_contribution.financial_type_id. This is the Financial Type that is used in CiviReports.

The Price Field Financial Type is actually called Line Items in the background. You can have each Price Field have a different Financial Type. You have to use Extended Reports Extension to be able to pull reports based on Line Item. These Financial Types are stored in table civicrm_line_item.financial_type_id.

When creating a Message Template use tokens for the civicrm_line_item table Ie.{$lineitem.label} {$lineitem.financial_type_id}

Below is a screenshot of our contribution page. Donors have the option to give to the Fund(s) of their choice and each one is a different Financial Type (Line Item) in the backend.