it doesn't seem like the Results of the Class Method are coming back correctly 100% of the time.

This is VERY strange, I would add a test/check if an error occur testing SQLCODE and %msg after &SQL() to see if/when/why it fails.

When using embedded SQL you are not supposed to check/access a returned variable (ExtDisplay in your case) before checking for success/failure via SQLCODE variable.

If you need to check if the query found a row, you should check the SQLCODE value, not ExtDisplay  value.

Stream compression is enabled by default since version 2021.2, see release notes:

Saving on Storage

Stream compression – is now on by default for all globals-based stream classes, with no application change required. Existing data remains readable and will be compressed upon the next write. Experiments with real-world data have indicated compression ratios ranging from 30% for short texts to 80% and more for XML and other document types.

Please check the relevant documentation:

Executing Stored Procedures

I've asked the DC AI chat bot and the answer is worth a look:

https://community.intersystems.com/ask-dc-ai?chat_id=1920

Note that using SQL Server ODBC you probably do not need to specify "IOType" in the param array.

If you still have problems, get back with a sample code of what you are doing.

Never, ever, concatenate parameters to an SQL Query!

Fixed for you:

    Set sqlQuery = "SELECT * FROM %Dictionary.PropertyDefinition WHERE parent = ? ORDER BY SequenceNumber"
    Set resultSet = ##class(%SQL.Statement).%New()
    Set status = resultSet.%Prepare(sqlQuery)
    $$$ThrowOnError(status)
    Set tResult = resultSet.%Execute(className)
    
    While tResult.%Next() {
        Set Name = tResult.%Get("Name")
        ...
        }

Back to your initial question, what is your definition of "sorted by Storage"?

If you need the ($list) position of properties within the global, then your query does not answer your question.
I'm writing this in case other community members read this question/answer.