I want to avoid using reparsepoints if possible, but I still need to tag files with out of band data, does anyone see and issue performance-wise using an alternate stream that would have to be opened and read on every create? This would be done in the precreate path.
This will affect performance without a doubt. Reparse points were designed for this reason. Why do you want to avoid using them?
There may be more to the decision to consider too. Reparse points have some limitations - only one per file and they conflict with EA’s (extended attributes which are not widely used). Alternate streams do not have these limitations but will impact performance. Neither choice will work if you need to support FAT or other file systems that do not have streams or RP’s.
If the size of the alternate stream data is small, it should have minimal impact on performance (since it should be possible to store the ADS data resident in the MFT entry.) Worst case, the ADS will be read and then cached, so “worst case” in that scenario would be when someone opens every file in a large directory just once. You might want to try prototyping that case - build a little filter that stores a modest amount of data (like 128 bytes) in an ADS, create a big directory and then build an application to touch every single file. That shouldn’t be a HUGE amount of effort.