One obvious alternative is to forget about either UDTs or PropertyBags.

You can use a fabricated ADO Recordset instead and get a lot more functionality than something as crude as an array of UDTs offers. These can also be persisted to disk or a byte array and loaded back as needed too.

This means you get many of the benefits of using data access objects (such as data binding) without the need to use a database.