buenas,
no entiendo que tan mal tiene poner un elemento P dentro de LI. de hecho, es totalmente valido según el DTD.
Código:
<!ELEMENT LI - O (%flow;)* -- list item -->
<!ENTITY % flow "%block; | %inline;">
<!ENTITY % block
"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
por otro lado, un LI no es un elemento lineal, sino de tipo lista. que en teoría se comporta como bloque pero con un añadido.