The aria-label, aria-labelledby, and aria-describedby attributes won't work with <div> and <span> elements unless they have a suitable role attribute. See the
$1 for more on this.
I guess you could mark up the emoticon with a role="img" attribute and then use an aria-label attribute to give it an accessible name. That's a lot less hassle than dealing with extra visually-hidden text content. So:
<p>Today I saw a <span aria-label="smiling person with flower in their hair" role="img">(✿◠‿◠)</span></p>