While I too hold to this rule whenever possible, there are now and
then layout tasks which I just cannot solve without a table
Table elements have some pretty cool layout properties, and yes, there are times that those properties are needed. In these cases, CSS has the ability to set elements to display like various table elements, while keeping your code semantically correct as you would not actually using tables elements.
This includes properties such as display: table;
display: table-cell;
, display: table-row;
In terms of your example.. Tabular data is used to display information to a user.. placing inputs or textareas inside of a table would not be semantically correct. However, if you were to have that same format, with pre-existing data just being displayed, I would say that a table would be acceptable.
That format layout can be made with css fairly easily, using anything from floats, display: inline-block;
or the table display properties mentioned above.