Why do you intent to use option[Cell] at all? I have never used option types myself, but I would assume that there is some overhead involved. Or do you think there is not?
You have the Cell object with x and y fields of type integer. So it should be possible to define a x, y combination that is a invalid state, maybe x, y both with value int.high. Whenever your proc returns that invalid state you can detect it, you can declare your own isNil() or isInvalid() proc for Cell data type and check for invalid state. But well, option types may be fun, I would assume that they work with hidden tuples? I should read more about them.