fwiw I lean towards not deriving a nodata mask from RasterBand, because
RasterBand contains things that don't apply, and as others have noted
lead to odd situations.
Rather, have this hierarchy:
raster_tile
/ \
RasterBand NoDataMask
i.e., make a general-purpose 2D raster bitmap class which is then the
base of specialized bitmaps.
Ray